PHP无法打开包含文件

时间:2014-09-26 11:17:11

标签: php apache lamp

我的PHP脚本有问题。访问站点时会记录以下错误:

[Fri Sep 26 11:57:56 2014] [error] [client 31.22.44.2] 
PHP Fatal error:  require_once(): Failed opening required
 './sites/default/modules/views/handlers/views_handler_field_markup.inc' 
(include_path='.:/usr/share/php:/usr/share/pear') in 
/var/www/www.xoomtalk.com/htdocs/sites/default/modules/views/includes/handlers.inc
 on line 76

我已确认引用的文件存在,并且www-data可以访问它。权限看起来很好,并且据我所知没有改变

我错过了什么?

3 个答案:

答案 0 :(得分:1)

  

[Fri Sep 26 11:57:56 2014] [错误] [客户端31.22.44.2] PHP致命   错误:require_once():需要打开失败
  ' ./站点/默认/模块/视图/处理/ views_handler_field_markup.inc'   (include_path ='。:/ usr / share / php:/ usr / share / pear')in   /var/www/www.xoomtalk.com/htdocs/sites/default/modules/views/includes/handlers.inc   在第76行

将路径/var/www/www.xoomtalk.com/htdocs添加到您的include_path

更多解释:

你的include_path=.:/usr/share/php:/usr/share/pear,意味着php脚本会在以下位置找到包含文件:current_path,/ usr / share / php或/ usr / share / pear

当您想要这个文件时 ./sites/default/modules/views/handlers/views_handler_field_markup.inc

所有允许的路径是: (当前路径) /var/www/www.xoomtalk.com/htdocs/sites/default/modules/views/includes /./站点/默认/模块/视图/处理/ views_handler_field_markup.inc

(/ usr / share / php)/ usr / share / php /./ sites / default / modules / views / handlers / views_handler_field_markup.inc

(在/ usr /共享/梨) /usr/share/pear/sites/default/modules/views/handlers/views_handler_field_markup.inc

在这些路径中,php无法找到该文件。

答案 1 :(得分:1)

在以下文件中: /var/www/www.xoomtalk.com/htdocs/sites/default/modules/views/includes/handlers.inc  在第76行

改变这个:

'./sites/default/modules/views/handlers/views_handler_field_markup.inc'

至此:'/var/www/www.xoomtalk.com/htdocs/sites/default/modules/views/handlers/views_handler_field_markup.inc'

这应该可以解决问题。 问题是,您正在使用来自各种目录的脚本,但请求的“根”是您可以检查的cwd(当前工作目录):getcwd() (并且你要求cwd包含亲戚

答案 2 :(得分:0)

我设法解决了这个问题,最终与权限或路径无关,尽管在Apache日志中没有这方面的迹象。

问题是服务器也在运行AppArmor,由于某种原因阻止Apache进程访问文件。

AppArmor设置为抱怨而不是强制执行测试模式(命令为aa-complain apache2)这使一切都开始工作。

感谢所有贡献者的建议。