PHP Fatal error: Unknown: Failed opening required '/home/user/pathto/header.php' after adding it as auto_prepend_file

PHP Fatal error: Unknown: Failed opening required '/home/user/pathto/header.php' after adding it as auto_prepend_file

我的目标是在 Kubuntu 16.04 中为本地开发网站配置 php 分析。

根据文档安装 tideways 并检查其安装是否正确:

php --ri tideways_xhprof

已创建header.php,内容如下

<?php 

tideways_xhprof_enable();

php.ini

中添加了对它的引用
auto_prepend_file = "/home/user/pathto/header.php"

重新启动apache2

并在 apache 错误日志中得到以下错误:

[Sat Jan 27 17:54:24.233604 2018] [:error] [pid 15976] [client 127.0.0.1:42054] PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0 [Sat Jan 27 17:54:24.233653 2018] [:error] [pid 15976] [client 127.0.0.1:42054] PHP Fatal error: Unknown: Failed opening required '/home/user/pathto/header.php' (include_path='.:/usr/share/php') in Unknown on line 0

尝试添加指令

php_value auto_prepend_file /home/user/pathto/header.php 

apache2.conf 中网站的 Directory 块,但弹出相同的错误。

怎么了?什么权限不对? 问候。

Linux 使用权限模型,该模型包含可以属于组的用户,以及可以分配给这些用户和组的文件和目录。默认情况下,当您在 Ubuntu 上安装 Apache 和 PHP 时,您最终会得到一个名为 "www-data" 的 Apache 新用户。每当 Apache 运行并需要访问文件系统时,它与任何其他用户并无不同,操作系统需要与任何其他用户相同的权限。

所以从技术上讲,如果您想要 PHP 用户主目录中的脚本,您必须以某种方式授予 Apache 的 www-data 用户访问那里文件的权限。

当我设置新服务器时,我通常会将自己添加到 www-data 组:

# add user brian to the www-data group
sudo usermod -a -G www-data brian

这让我更容易管理文件(一旦我完成了后续步骤),因为我不需要使用 sudo 来更改文件。

我会让www-data拥有/var/www

下的一切
# Change all files at /var/www recursively to be owned by www-data
sudo chown -R www-data:www-data /var/www

让在 /var/www 下创建的新文件最终归 www-data 所有:

#set the gid on any new dir inside /var/www
sudo chmod 2755 /var/www/html

然后将自己设置为所有者,而不是 www-data:

# Be the owner of all www
sudo chown -R brian:www-data /var/www

请注意,我从来没有在 /var/www 之外授予权限,但这使得管理 /var/www 内的文件和目录变得更加容易,因此您不需要将 [=35] =] 文件在您的主目录中。