Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
PHP/CentOS-无法打开流:打开的文件太多_Php_Apache_Filesystems_Centos - Fatal编程技术网

PHP/CentOS-无法打开流:打开的文件太多

PHP/CentOS-无法打开流:打开的文件太多,php,apache,filesystems,centos,Php,Apache,Filesystems,Centos,这是一个PHP/Apache问题还是一个文件系统问题还不清楚。我正在编写一个脚本来检查LDAP服务器的引用完整性,因此我要提取大量数据。我正在使用PHP5.3.8、Apache 2.2.3和CentOS 5.7(我认为这是正确的版本) 当我运行脚本时,我得到一个PHP警告,上面说: 警告:包括(“文件名”):无法打开流:第50行“文件名”中打开的文件太多警告:包括():无法打开第50行“文件名”中的“文件名”以供包含(包括路径=”。:/usr/local/zend/share/ZendFrame

这是一个PHP/Apache问题还是一个文件系统问题还不清楚。我正在编写一个脚本来检查LDAP服务器的引用完整性,因此我要提取大量数据。我正在使用PHP5.3.8、Apache 2.2.3和CentOS 5.7(我认为这是正确的版本)

当我运行脚本时,我得到一个PHP警告,上面说:

警告:包括(“文件名”):无法打开流:第50行“文件名”中打开的文件太多警告:包括():无法打开第50行“文件名”中的“文件名”以供包含(包括路径=”。:/usr/local/zend/share/ZendFramework/library:/usr/local/zend/share/pear')

我删掉了很多代码以包含更少的文件,这似乎没有什么区别。我认为这可能是因为我拉了多少数据(可能是由于抖动),所以我限制了它,并输出了峰值内存使用量7.5 MB(在我限制了返回结果之后),这是一个不错的块,但不足以杀死脚本

在所有这些过程中,我在谷歌上搜索了这个问题,发现它可能是由文件系统打开文件限制引起的,该限制可以通过一个名为ulimit的命令更改。默认值为1024。我为所有用户设置了40000。还是没用。我的PHP脚本在精简后总共使用了11个文件。我只是不明白为什么会这样

有什么想法吗

提前感谢,


Jordan

您是否修改了该用户的软限制和硬限制?此外,如果这是一个在用户(如“Apache_user”)下运行的Apache进程,则需要停止Apache、注销、重新登录(确保软/硬限制都已到位)并启动Apache进程。

LDAP。。。在遍历树时是否执行包含此文件的递归调用?不,每个文件只包含一次。在我开始研究LDAP之后,我没有包括任何内容。我应该提到,如果我去掉LDAP查询,它可以正常工作。我为所有用户修改了它,并从那时起重新启动了整个服务器。我将硬限制和软限制的限制从1024提高到40000。哇,奇怪。您将真正需要分解代码,以尝试找出导致它的原因。