PHP致命错误失败打开必需的文件

我从Apache获得以下错误

[星期六3月19日23:10:50 2011] [警告] mod_fcgid:stderr:PHP致命错误:require_once()[function.require]:无法打开所需'/common/configs/config_templates.inc.php'(include_path =' 。/ usr / share / pear:/ usr / share / php')in /home/viapi​​cs1/public_html/common/configs/config.inc.php on line 158

我绝对不是Apache的专家,但文件config.inc.php&config_templates.inc.php在那里。 我也尝试导航到我放在common / configs /中的test.html页面,所以我认为没有任何权利问题。 我还在config_templates.inc.php上设置了权限,赋予每个人读,写和执行权限。 不知道该怎么做,我检查是否有/ usr / share / php目录,我发现没有,但是当我做yum安装php它说它有最新的。 想法?

这实际上不是Apache相关的问题。 甚至不涉及PHP。
您必须从文件系统path中区分虚拟服务器path。

服务器上没有/common/configs/config_templates.inc.php文件,而是/home/viapics1/public_html/common/configs/config_templates.inc.php

/home/viapics1/public_html部分被称为“文档根”,它将虚拟世界与真实世界连接起来。 如果你把你的代码改成类似的东西

 require_once $_SERVER['DOCUMENT_ROOT'].'/common/configs/config_templates.inc.php'; 

它将从放置在任何目录中的任何文件起作用。

另外,如果您确定模板始终保持与目前调用脚本相同的目录,则可以通过以下方式编写绝对path

 require_once dirname(__FILE__).'/config_templates.inc.php'; 

或者从PHP 5.3开始,您可以使用__DIR__来代替:

 require_once __DIR__.'/config_templates.inc.php'; 

如果您运行了SELinux,则可能必须授予httpd权限以使用以下命令从/ home目录中读取:

  sudo setsebool httpd_read_user_content=1 

运行php -f /common/configs/config_templates.inc.php来validation文件中PHP语法的有效性。

嘿,我只是有这个问题,发现我没有看足够紧密的文件夹位置:

我有

 require_once /vagrant/public/liberate/**APP**/vendor/autoload.php 

有效的是:

 require_once /vagrant/public/liberate/vendor/autoload.php 

很容易(作为初学者)忽略这个非常不明显的问题。 是的,我意识到所要logging的问题直接指向手头的问题,但是如果你是像我这样的初学者,这些事情可能容易被忽视。

固定:

仔细查看(__ Dir __'/etc/etc/etc/file.php')的debugging,然后在不同的窗口中打开文件系统,并直接映射这两个文件系统。 如果有丝毫的差别,这个要求将不起作用,上面的错误将被抛出。

我有完全相同的问题,我三倍检查包括path,我也检查,梨安装,一切看起来不错,我仍然得到错误,经过几个小时的疯狂看着这个我意识到,在我的脚本有这样的:

 include_once "../Mail.php"; 

代替:

 include_once ("../Mail.php"); 

是的,这个愚蠢的括号不见了,但是在我的脚本的这一行中没有产生任何错误,这对我来说很奇怪