我的目标是在 Kubuntu 16.04 中为本地开发网站配置 php 分析。
根据文档安装了潮汐道,并通过以下方式检查其安装是否正确:
php --ri tideways_xhprof
创建的标头.php包含以下内容
<?php
tideways_xhprof_enable();
添加了对php的引用.ini
auto_prepend_file = "/home/user/pathto/header.php"
重新启动的 apache2
并在 apache 错误日志中获取以下错误:
[2018 年 1 月 27 日星期六 17:54:24.233604] [:错误] [pid 15976] [客户端 127.0.0.1:42054] PHP 警告:未知:无法打开流:第 0 行未知中的权限被拒绝 [周六 1 月 27 日 17:54:24.233653 2018] [:错误][PID 15976][客户端 127.0.0.1:42054]PHP 致命错误: 未知:需要打开失败的"/home/user/pathto/header.php" (include_path='.:/usr/share/php') 在第 0 行的未知中
尝试添加指令
php_value auto_prepend_file /home/user/pathto/header.php
到apache2.conf中网站的目录块,但弹出相同的错误。
怎么了?哪些权限有问题? 问候。
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 中的文件和目录变得更加容易,因此您不需要将 PHP 文件放在主目录中。