Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory management 需要一次:无法分配内存_Memory Management_Php - Fatal编程技术网

Memory management 需要一次:无法分配内存

Memory management 需要一次:无法分配内存,memory-management,php,Memory Management,Php,我有一个非常“非传统”的设置,如下所示: 我有一台运行Ubuntu Desktop 12.10的VMware虚拟机,网络设置为桥接。安装在虚拟机内部的是nginx、php-fpm、php-cli和MySQL。PHP是5.4.10 我有一个文件夹,其中包含我正在主机(Windows 7)中处理的应用程序的所有文件。然后,此文件夹作为网络共享可用 然后,虚拟机通过samba将windows共享装载到一个目录中。这个目录然后由nginx和php-fpm提供服务。到目前为止,一切进展顺利 我有一个通过P

我有一个非常“非传统”的设置,如下所示:

我有一台运行Ubuntu Desktop 12.10的VMware虚拟机,网络设置为桥接。安装在虚拟机内部的是nginx、php-fpm、php-cli和MySQL。PHP是5.4.10

我有一个文件夹,其中包含我正在主机(Windows 7)中处理的应用程序的所有文件。然后,此文件夹作为网络共享可用

然后,虚拟机通过samba将windows共享装载到一个目录中。这个目录然后由nginx和php-fpm提供服务。到目前为止,一切进展顺利

我有一个通过PHPCLI运行的脚本来帮助我构建和处理一些文件。以前,此脚本在我的windows主机上运行良好。然而,当我在Ubuntu虚拟机中运行它时,它似乎抛出了
无法分配内存的错误。奇怪的是,它也是偶发的,并不是一直都在发生

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-fpm
    相同的
    php.ini
    ,位于
    /etc/php/php.ini

  • php.ini
    中的
    memory\u limit
    设置为
    128M
    (默认值),这对于应用程序来说似乎足够了

  • 即使将内存限制增加到256M,错误仍然会发生


  • 虚拟机有2GB内存


我一直在谷歌上搜索导致
无法分配内存的错误的原因,但没有发现任何有用的东西。是什么导致了这个问题?

原来这是我的windows共享的问题。也许是因为Windows7是一个客户端操作系统,它没有被调整为经常提供大量文件(在我的例子中就是这样)

要修复此问题,请在注册表中设置以下项:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache
1

HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size
to
3


我已经用这些新设置运行了大约一周,并且在进行更改后没有遇到任何内存分配错误。

但是,您的虚拟机本身有多少内存?虚拟机有2GB的内存。其他运行的内容是否占用过多内存?我看不到。交换甚至没有被使用,因为所有正在运行的进程都有足够的内存。在需要
somecomponent.php
之前,它做了什么吗?