PHP:尽管有适当的权限,权限被拒绝

前端之家收集整理的这篇文章主要介绍了PHP:尽管有适当的权限,权限被拒绝前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图用 PHP读取一个文件,但是我收到一个权限被拒绝的错误,尽管每个人都有对该文件的读取权限.

PHP代码

$config=file_get_contents('/opt/jenkins/home/config.xml');

错误

Warning: file_get_contents(/opt/jenkins/home/config.xml): Failed to open stream: Permission denied in [...]

文件系统权限:

有一个符号链接指向/ opt / jenkins / home /到/ var / lib / jenkins,每个人都有对符号链接,实际文件夹和文件的读取权限.

$ls -lh /opt/jenkins/
lrwxrwxrwx 1 sysadmin sysadmin   16 2011-08-04 08:12 home -> /var/lib/jenkins

$ls -lh /var/lib/ | grep jenkins
drwxr-xr-- 6 jenkins adm     4.0K 2011-08-04 10:04 jenkins

$ls -lh /var/lib/jenkins/config.xml
-rwxr-xr-- 1 jenkins adm 3.9K 2011-08-04 10:05 /var/lib/jenkins/config.xml

Apache配置

配置为以下符号链接(选项全部).添加/ var / lib / jenkins /的目录指令没有区别.

<Directory /opt/jenkins/home/>
        Options All
        AllowOverride All
        Order Allow,Deny
        Allow from All
</Directory>

附加信息

我是否使用通过符号链接的路径(“/opt/jenkins/home/config.xml”)或实际路径(“/var/lib/jenkins/config.xml”)我也有同样的问题.

apache2 version=2.2.14-5ubuntu8.4
PHP version=5.3.2-1ubuntu4.9

任何想法为什么我得到错误

您的目录需要执行权限才能使其工作.它似乎没有世界执行,由于jenkins可能不是apache用户,并且apache用户不在adm组中,它将无法正常工作:
$ls -lh /var/lib/ | grep jenkins
drwxr-xr-- 6 jenkins adm     4.0K 2011-08-04 10:04 jenkins

每个例子:

netcoder@netcoder:~$mkdir foo
netcoder@netcoder:~$echo hello > foo/bar
netcoder@netcoder:~$chmod 777 foo/bar
netcoder@netcoder:~$ls -lsah foo/bar 
4.0K -rwxrwxrwx 1 netcoder netcoder 6 2011-08-04 08:22 foo/bar
netcoder@netcoder:~$chmod 444 foo/
netcoder@netcoder:~$ls -lsah | grep foo
4.0K dr--r--r--  2 netcoder netcoder 4.0K 2011-08-04 08:22 foo
netcoder@netcoder:~$cat foo/bar 
cat: foo/bar: Permission denied

即使foo / bar有0777权限,如果该目录没有执行权限,则读取其内容即被拒绝.

您将需要为目标目录和符号链接设置权限.

猜你在找的PHP相关文章