gpt4 book ai didi

php - 即使所有父文件夹都是 775,fopen 也会失败(权限被拒绝)

转载 作者:行者123 更新时间:2023-12-04 19:42:56 24 4
gpt4 key购买 nike

我正在尝试使用以下代码从 PHP 创建一个文件:

$config_file = fopen( '/home/the-user/domains/the-domain/public_html/the-folder/the-file.php', 'w');

该文件所在的文件夹由 DirectAdmin 创建。因此 PHP 通常无法访问此文件夹。因此,我添加了 apache user 到 DirectAdmin 使用的用户组。

我正在使用以下内容来更改新创建的文件夹的权限:
exec('sudo chmod 775 /home/the-user/domains/the-domain/public_html/the-folder/');
即使做了所有这些,我仍然得到 failed to open stream: Permission denied错误。

我浏览了许多不同的帖子,我想我几乎尝试了所有方法,但都没有成功。

谁能告诉我我做错了什么?

最佳答案

错误消息很清楚 PHP 没有对该文件的写入权限。现在,由于您没有提到您正在运行哪个操作系统和网络服务器,我必须做出几个假设,因为这显然是 Unix,所以命令将是相同的,但您使用的网络服务器将确定哪个 运行用户 需要访问权限(以下示例适用于 ubuntu 上的 apache)
所以请确保文件可由 www-data 写入用户/组。

exec('sudo chown www-data:www-data /home/the-user/domains/the-domain/public_html/the-folder/');
或通过命令行
chown www-data:www-data /home/the-user/domains/the-domain/public_html/the-folder/
这将更改该特定文件的用户/组。
要检查您的网络服务器在哪个用户下运行,您可以使用以下命令输出所有进程及其运行用户的列表
ps auxf | more
要记住的另一件事是安全偏离路线 chmod 755 ,我不建议将其用于 php 文件作为我遵循的一般经验法则。

Files are generally 644 and folders are 755. That's for normal operation.

Certain files to be marked read-only are often set to 444 or in some cases 400.

关于php - 即使所有父文件夹都是 775,fopen 也会失败(权限被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48812495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com