php工具箱路径错误,路径-PHP致命错误无法打开所需的Fi

路径-PHP致命错误无法打开所需的Fi

我从Apache得到以下错误

[2011年3月19日23:10:50周六] [警告] mod_fcgid:stderr:PHP致命错误:require_once()[function.require]:无法打开所需的'/common/configs/config_templates.inc.php'(include_path =' 。:/ usr / share / pear:/ usr / share / php')在第158行的/home/viapics1/public_html/common/configs/config.inc.php中

我绝对不是Apache的专家,但是文件config.inc.php和config_templates.inc.php在那里。 我还尝试导航到放置在common / configs /中的test.html页面,因此我假设没有权限问题。 我还在config_templates.inc.php上设置了权限,以赋予所有人读取,写入和执行权限。 不知道此时该怎么办,我检查是否有一个/ usr / share / php目录,但我发现那里没有,但是当我执行yum install php时,它说它具有最新版本。 有想法吗?

Al Katawazi asked 2020-02-12T14:27:52Z

7个解决方案

86 votes

这实际上不是与Apache相关的问题。 甚至没有与PHP相关的代码。要了解此错误,您必须将虚拟服务器上的路径与文件系统中的路径区分开。

require操作员可以处理文件。 但是没有

/common/configs/config_templates.inc.php

文件在服务器上,而是

/home/viapics1/public_html/common/configs/config_templates.inc.php

/home/viapics1/public_html

部分称为文档根,将虚拟世界与真实世界连接起来。 幸运的是,Web服务器通常在与PHP共享的配置变量中拥有文档根目录。 因此,如果您将代码更改为类似

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

它可以在任何目录中的任何文件中工作。

更新:最终,我写了一篇文章,解释了文件系统和Web服务器中相对路径和绝对路径之间的区别,它详细解释了此问题,并包含一些实用的解决方案。

不幸的是,当您从命令行运行脚本时,这种方便的变量不存在。 在这种情况下,将采取一种称为“单个入口点”的技术。 您也可以参考上面的文章以了解详细信息。

Your Common Sense answered 2020-02-12T14:28:45Z

9 votes

如果您正在运行SELinux,则可能必须使用以下命令授予httpd权限以读取/ home dir:

sudo setsebool httpd_read_user_content=1

user1533634 answered 2020-02-12T14:29:05Z

3 votes

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

Alex Howansky answered 2020-02-12T14:29:28Z

1 votes

以防万一这可以帮助其他人,我偶然发现了昨晚触发此错误的晦涩案例。 具体来说,我使用require_once方法并仅指定文件名而不指定路径,因为所需文件位于同一目录中。

我开始收到“无法打开所需文件”错误。 经过一段时间的梳理,我最终在致命错误输出上方立即注意到一条PHP警告消息,指示“无法打开流:权限被拒绝”,但更重要的是,向我通知了它要尝试的文件路径 打开。 然后,我想出了一个事实,即我在其他位置创建了该文件的副本(所有权无法由Apache访问),而该副本恰好也在PHP“ include”搜索路径中,并且在我希望将其提取的文件夹之前 。 天哪!

John Rix answered 2020-02-12T14:29:54Z

0 votes

嘿,我只是遇到了这个问题,发现我没有足够仔细地查看文件夹位置:

我有

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

起作用的是:

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

(作为初学者)很容易忽略这个非常不明显的问题。 是的,我确实意识到所记录的需求问题直接指向当前的问题,但是如果您像我这样的初学者,那么这些事情就很容易被忽略。

固定:

仔细查看(__ Dir __'/etc/etc/etc/file.php')的调试,然后在另一个窗口中打开文件系统,然后直接将两者映射。 如果只有一点点差异,则此要求将不起作用,并且将吐出上述错误。

Sweet Chilly Philly answered 2020-02-12T14:30:37Z

0 votes

您可以使用PHP常量__FILE__进行修复

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

它是文件的目录。 如果在include中使用,则目录   返回包含的文件。 这相当于   dirname __FILE__ 此目录名称不带斜杠   除非它是根目录。 1

Bernard answered 2020-02-12T14:31:03Z

-7 votes

我遇到了完全相同的问题,我三遍检查了包含路径,我还检查了是否安装了pear,并且一切看起来都不错,但仍然出现错误,经过几个小时的疯狂研究之后,我意识到在脚本中 有这个:

include_once "../Mail.php";

代替:

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

是的,缺少愚蠢的括号,但是在脚本的这一行上没有生成错误,这对我来说很奇怪

Eduardo answered 2020-02-12T14:32:34Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值