繁体   English   中英

实时服务器上的 PHP 文件权限问题

[英]PHP file permission issues on live server

最近,我搬了一个网站,所有与文件相关的操作都因为权限问题而停止工作,例如copyimagecreatefromjpeg等。

所有文件都在 files/ 目录中创建。 我递归地给了它 755 的目录权限和 644 的所有文件的权限。 PHP 函数仍然不起作用。 它只有在我授予 777 权限时才有效(甚至 775 都无效)。

我检查了其他实时项目的权限。 他们有 755 个目录和 644 个文件,但它们似乎仍然可以正常工作,没有任何权限问题。

任何人都可以在这个特定的网站上向我解释这个问题的原因吗?

谢谢

这听起来像是一个所有权问题。

要进行测试,请在服务器上创建一个具有 777 perms 的文件夹(例如 tmp,可能在您的文档根目录中)。

然后创建一个脚本(与 tmp 一起),对该文件夹进行简单的写入。

<?php

file_put_contents(__DIR__ . '/tmp/test.txt', 'hello earth');

然后查看生成的文件的所有权和权限。

在我的开发服务器上,我在 Linux (Debian) 上的 Web 服务器 Apache(使用 mod php)下运行 PHP。 脚本以用户“www-data”的身份运行。 所以这里的关键是用户www-data需要能够写入文件夹。

如果 Web 服务器无法写入该文件夹,则 apache 错误日志中会出现类似以下错误的内容:

[Tue May 10 08:27:52.404959 2016] [:error] [pid 18] [client 172.17.42.1:59832] PHP Warning:  file_put_contents(/var/www/stackoverflow/tmp/test.txt): failed to open stream: Permission denied in /var/www/stackoverflow/so_test.php on line 3, referer: http://localhost/

尝试了解您的服务器环境和 Unix 权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM