如何解决“PHP致命错误:未知:打开所需的文件失败”

6

我有两个站点在LAMP堆栈上。其中一个(Site1)使用WordPress和Wordfence,它运行得非常好。第二个网站(Site2)只在其上运行一个简单的index.php文件:

<?php
echo "Testing";
?>

然而,它显示HTTP ERROR 500,错误日志如下。
[Thu Dec 22 16:23:44.774993 2016] [:error] [pid 56607] [client xxx:27253] PHP Warning:  Unknown: failed to open stream: No such file or directory in Unknown on line 0
[Thu Dec 22 16:23:44.775042 2016] [:error] [pid 56607] [client xxx:27253] PHP Fatal error:  Unknown: Failed opening required '/var/www/site1/public_html/public/wordfence-waf.php' (include_path='.:/usr/share/php') in Unknown on line 0

Site1和Site2互不相关,它们位于不同的文件夹中。我不确定发生了什么事情,请给出建议。
Site1上的.htaccess文件。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# Wordfence WAF
<IfModule mod_php7.c>
        php_value auto_prepend_file '/var/www/site1/public_html/public/wordfence-waf.php'
</IfModule>
<Files ".user.ini">
<IfModule mod_authz_core.c>
        Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
</IfModule>
</Files>

# END Wordfence WAF

系统正在为两个站点使用该.htaccess文件。第二个站点是第一个站点的子域名(还是其根目录在第一个站点的根目录内)? - elixenide
嗨@EdCottrell。它们是不同的网站。结构如下: - Dale Nguyen
也许设置了PHP的自动预处理功能? - arkascha
感谢@EdCottrell的巨大帮助!我将auto_prepend_file放入了Apache配置文件中,现在网站可以正常工作了。(耶) - Dale Nguyen
谢谢@arkascha也 :) - Dale Nguyen
显示剩余3条评论
2个回答

1
感谢@EdCottrell。我终于找到了答案。
首先,我进行了调试,创建了一个info.php文件在工作站点上,以查找php.ini的位置。
<? php phpinfo(); ?>

接下来,我会查看是否存在 auto_prepend_file = 的值。如果有,就将其删除。

然后,我会打开 site1.conf 文件,并将其中的 auto_prepend_file 行替换为 .htaccess 中的行。

<Directory "/path/to/folder">
    php_value auto_prepend_file /absolute/path/to/apache-prepend.php
</Directory>

重新启动Apache服务器后,一切正常!
sudo systemctl restart apache2

0

我遇到了同样的问题,我尝试运行

docker run --t -v .:/project php

当我尝试去做的时候

/project:$ php file.php

我得到了这个错误。

显然,你不能轻易地使用 Docker 中的绑定卷。所以我复制了容器内的卷,并使用了一个副本。

docker run --t -v .:/project php

/project:$ cd ..
/:$ cp -r /project /project2
/:$ cd /project2
/project2: $ php file.php

而且它运行正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接