gpt4 book ai didi

php - 权限设置为 777,文件仍然不可写

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:08 25 4
gpt4 key购买 nike

我已将文件权限设置为 777,但我无法使用 PHP 写入文件。

我可以在我的 FTP 客户端中清楚地看到该文件具有 0777 权限,当我这样做时:

echo (true === is_writable('file.txt')) ? 'yes' : 'no';

我得到“不”;

我也试过:

echo (true === chmod('file.txt', 0777)) ? 'yes' : 'no';

同样的结果。

目录列表是这样的:

public_html
public 0777
css 0755
js 0755
file.txt 0777

我正在使用 .htaccess 文件将所有流量重定向到公共(public)子文件夹。当然,我已将文件排除在重写之外(可以从我检查过的浏览器访问):

RewriteRule  ^(file).*  - [L]

这是为什么?

最佳答案

我想 Apache 以不同于拥有该文件的用户/组的用户/组运行。在这种情况下,文件本身需要是 0777

public 如果您计划使用 PHP 将文件添加到文件夹,则只需为 0777。即使文件夹本身不是 0777,如果文件是并且文件夹至少有 5 供用户使用(读取/执行),您应该能够写入文件。

最后,你的文件树应该是这样的:

public_html
public
file.txt 0777

当然,您将无法使用 PHP 更改这些权限,但您可以从 FTP 客户端执行此操作。

如果仍然无法运行,则 PHP 可能正在安全模式下运行,或者您可能正在使用 PHP Suhosin 等扩展程序。将文件的所有者更改为运行脚本的同一用户/组可能会获得更好的结果。

要获取执行用户的用户/组 ID,您可以使用以下内容:

<?php
echo getmyuid().':'.getmygid(); //ex:. 0:0
?>

然后,您可以使用 chown(在终端中)更改文件的所有者:

> chown 0:0 file.txt

关于php - 权限设置为 777,文件仍然不可写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1260150/

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