我有一个非常“非常规”的设置,如下所示:
我有一个运行 Ubuntu Desktop 12.10 的 VMware 虚拟机,网络设置为桥接。安装在 VM 内部的是 nginx、php-fpm、php-cli 和 MySQL。PHP 是 5.4.10。
我有一个文件夹,其中包含我在主机(Windows 7)中正在处理的应用程序的所有文件。然后,此文件夹可用作网络共享。
然后虚拟机通过 samba 将 windows 共享挂载到一个目录中。然后这个目录由 nginx 和 php-fpm 提供服务。到目前为止,一切正常。
我有一个通过 php CLI 运行的脚本来帮助我构建和处理一些文件。以前,这个脚本在我的 Windows 主机上运行良好。cannot allocate memory
但是,当我在 Ubuntu VM 中运行它时,它似乎会抛出错误。奇怪的是,它也是零星的,并不总是发生。
user@ubuntu:~$ sudo /usr/local/php/bin/php -f /www/app/process.php
Warning: require_once(/www/app/somecomponent.php): failed to open stream: Cannot allocate memory in /www/app/loader.php on line 130
Fatal error: require_once(): Failed opening required '/www/app/somecomponent.php' (include_path='.:/usr/local/php/lib/php') in /www/app/loader.php on line 130
我已检查并确认以下内容:
/www/app/somecomponent.php
肯定存在。内部所有文件和子目录的权限
/www
设置为所有者,组和其他人的执行和读写。阅读此问题后,我已关闭 APC以查看 APC 是否是原因,但这样做后问题仍然存在。
php-cli
与 相同php.ini
,php-fpm
位于 中/etc/php/php.ini
。memory_limit
inphp.ini
设置为128M
(默认),这对于应用程序来说似乎足够了。即使将内存限制增加到
256M
,错误仍然会发生。VM 有 2GB 内存。
我一直在谷歌搜索以找出导致cannot allocate memory
错误的原因,但没有发现任何有用的信息。什么可能导致这个问题?