Introphp7 oauth illegal Speicherzuordnung
Während in einem komplexen Webanwendung läuft, wird ein Prozess versucht, hervorgebracht php7 illegal Speichermenge (18446744069414584466 Bytes) zuzuordnen, wenn die oauth Modul. Nach fpm Manager starten Sie den Fehler erscheint nach 2-5 mal dieser Code ausgelöst wird:
Nachricht$oauthClient = new \OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_AUTHORIZATION);
$oauthClient->disableSSLChecks();
$oauthClient->setToken($token, $tokenSecret);
$oauthClient->fetch($callUrl, $strPostData, $method, $headers);
Fehler
*20 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 18446744069414584466 bytes)
Beschreibung
Die betroffene Zeile in der Fehlermeldung erwähnt ist die holen Methode des oauth Client:
Ich habe versucht, den zugehörigen Code zu isolieren, indem ich ihn in einer Schleife ausfühle und die Speicherauslastung im Laufe der Zeit beobachte. Die Menge der verwendeten und zugewiesenen Speicher scheint im Laufe der Zeit stetig zu wachsen, aber nicht so schnell wie erwartet (wahrscheinlich ist es nur die oauthClient Caching Antworten)
Standalone
-Code
<?php
$strPostData = '';
$method = 'GET';
$consumerKey = '<consumerKey>';
$consumerSecret = '<consumerSecret>';
$token = '<token>';
$tokenSecret = '<tokenSecret>';
$url = '<url>';
$headers = array('accept' => 'application/json');
$callUrl = $url;
if ($method === 'POST' || $method === 'PUT') {
$headers['Content-Type'] = 'application/json';
}
$oauthClient = new \OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_AUTHORIZATION);
$oauthClient->disableSSLChecks();
$oauthClient->setToken($token, $tokenSecret);
do {
$oauthClient->fetch($callUrl, $strPostData, $method, $headers);
$response = $oauthClient->getLastResponse();
fwrite(STDOUT, 'Allocated Memory: '. memory_get_usage(false) . PHP_EOL);
fwrite(STDOUT, 'Used Memory: '. memory_get_usage(true) . PHP_EOL);
} while (true);
?>
Ausgabe
Allocated Memory: 236920
Used Memory: 262144
...
Allocated Memory: 263168
Used Memory: 524288
...
Allocated Memory: 289504
Used Memory: 524288
...
Used Memory: 524288
Allocated Memory: 331888
...
Allocated Memory: 395976
Used Memory: 524288
...
Allocated Memory: 428600
Used Memory: 524288
...
Kern & Module Versionen
Core: 7.0.8-3+deb.sury.org~trusty+1
date: 7.0.8-3+deb.sury.org~trusty+1
libxml: 7.0.8-3+deb.sury.org~trusty+1
openssl: 7.0.8-3+deb.sury.org~trusty+1
pcre: 7.0.8-3+deb.sury.org~trusty+1
zlib: 7.0.8-3+deb.sury.org~trusty+1
filter: 7.0.8-3+deb.sury.org~trusty+1
hash: 1.0
pcntl: 7.0.8-3+deb.sury.org~trusty+1
Reflection: 7.0.8-3+deb.sury.org~trusty+1
SPL: 7.0.8-3+deb.sury.org~trusty+1
session: 7.0.8-3+deb.sury.org~trusty+1
standard: 7.0.8-3+deb.sury.org~trusty+1
mysqlnd: mysqlnd 5.0.12-dev - 20150407 - $Id: 241ae00989d1995ffcbbf63d579943635faf9972 $
PDO: 7.0.8-3+deb.sury.org~trusty+1
xml: 7.0.8-3+deb.sury.org~trusty+1
bcmath: 7.0.8-3+deb.sury.org~trusty+1
calendar: 7.0.8-3+deb.sury.org~trusty+1
ctype: 7.0.8-3+deb.sury.org~trusty+1
curl: 7.0.8-3+deb.sury.org~trusty+1
dom: 20031129
mbstring: 7.0.8-3+deb.sury.org~trusty+1
fileinfo: 1.0.5
ftp: 7.0.8-3+deb.sury.org~trusty+1
gd: 7.0.8-3+deb.sury.org~trusty+1
gettext: 7.0.8-3+deb.sury.org~trusty+1
iconv: 7.0.8-3+deb.sury.org~trusty+1
json: 1.4.0
exif: 1.4 $Id: 8bdc0c8f27c2c9dd1f7551f1f9fe3ab57a06a4b1 $
mysqli: 7.0.8-3+deb.sury.org~trusty+1
OAuth: 2.0.2
pdo_mysql: 7.0.8-3+deb.sury.org~trusty+1
pdo_sqlite: 7.0.8-3+deb.sury.org~trusty+1
Phar: 2.0.2
posix: 7.0.8-3+deb.sury.org~trusty+1
readline: 7.0.8-3+deb.sury.org~trusty+1
shmop: 7.0.8-3+deb.sury.org~trusty+1
SimpleXML: 7.0.8-3+deb.sury.org~trusty+1
soap: 7.0.8-3+deb.sury.org~trusty+1
sockets: 7.0.8-3+deb.sury.org~trusty+1
sqlite3: 0.7-dev
ssh2: 0.13-dev
sysvmsg: 7.0.8-3+deb.sury.org~trusty+1
sysvsem: 7.0.8-3+deb.sury.org~trusty+1
sysvshm: 7.0.8-3+deb.sury.org~trusty+1
tokenizer: 7.0.8-3+deb.sury.org~trusty+1
wddx: 7.0.8-3+deb.sury.org~trusty+1
xmlreader: 7.0.8-3+deb.sury.org~trusty+1
xmlwriter: 7.0.8-3+deb.sury.org~trusty+1
xsl: 7.0.8-3+deb.sury.org~trusty+1
zip: 1.13.3
Zend OPcache: 7.0.8-3+deb.sury.org~trusty+1
Haben Sie etwas herausgefunden? Ich habe das gleiche Problem mit pecl oauth und PHP 7.0.4-7ubuntu2.1 (auf Ubuntu 16.04). lächerlich hohe Speicherzuweisung: Erlaubte Speichergröße von 134217728 Bytes erschöpft (versucht, 18446744069414591624 Bytes zuzuweisen) –
Ich werde auch hinzufügen, dass ich dies mit Apache erfahre, und wenn ich die Datei nach dem Neustart des Servers erneut speichern, funktioniert der Code normalerweise in Ordnung. –
nein, leider nicht, wir mussten stattdessen auf php5.6 downgraden und wenn ich mir die Anzahl der Fehler ansehe, die in den Grundfunktionen gefunden und behoben wurden (http://php.net/ChangeLog-7.php#) 7.0.7), ich denke nicht, dass es wirklich in der Produktion verwendet werden kann, zB: Integer Overflow in json_encode()/json_decode()/json_utf8_to_utf16(), Integer Overflow in nl2br() –