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] =] 文件在您的主目录中。
我的目标是在 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] =] 文件在您的主目录中。