我的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可以访问它。权限看起来很好,并且据我所知没有改变
我错过了什么?
答案 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
)这使一切都开始工作。
感谢所有贡献者的建议。