2016-11-21 39 views
4

PDOExeption SQLSTATE [HY001]無法當我從PHP-fpm的運行波紋管代碼分配足夠的存儲器

$connect = new PDO("dblib:host=mssql.dev.gm.local;dbname=GeoData","username","password"); 

try{ 
    $s = $connect->query('[RU].GetTownInfo 4368'); 
    var_dump($s->fetch()); 
}catch (Exception $e){ 
    var_dump($e->getMessage()); 
} 

我得到異常:

PDOExeption SQLSTATE [HY001]無法分配足夠的存儲器

但是,當我從php命令行運行相同的代碼,我沒有這樣的問題。

可能是什麼問題?

我使用nginx proxy_pass後端(php-fpm)。

要連接到MS SQL Server我使用Dblib(freetds)。 所有與OpenVZ,Nginx和Php-fpm一起使用的機器都是不同的虛擬機器。

命令行和上游的Php-fpm配置相同。

+0

該問題可能來自php-sql擴展。 檢查php-fpm.ini和php-cli.ini之間配置的差異 – twicejr

+0

也許增加php的內存限制?函數ini_set( 'memory_limit的', ' - 1'); –

+0

您也可以在運行腳本時監視服務器上的內存進程。也許你實際上用完了內存和交換。 – aynber

回答

0

系統告訴你問題是否正確?

PDOExeption SQLSTATE [HY001] 無法分配足夠的內存

所以,你可以嘗試通過在php.ini改變限制給PHP的一些更多的內存:

memory_limit = 128M

+1

'memory_limit'不會奇蹟般地解決所有內存錯誤。提高它只是解決了由自身引起的問題,這些問題明確地如此報道。 –

+0

此外,我很確定PHP(-scripts)的內存限制不涉及第三方擴展消耗的內存。 – DanFromGermany