Ric*_*nop 5 php apache mod-rewrite
我已将文件权限设置为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文件将所有流量重定向到公共子文件夹.当然,我已将文件排除在重写之外(可以从我检查的浏览器访问):
RewriteRule  ^(file).*  - [L]
这是为什么?
我猜Apache运行的是不同的用户/组,而不是拥有该文件的用户/组.在这种情况下,文件本身需要0777.
public只有0777在你计划使用PHP将文件添加到文件夹时才需要.即使文件夹本身不是0777,如果文件是,并且文件夹至少5有user(read/execute),您应该能够写入该文件.
最后,您的文件树应如下所示:
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
| 归档时间: | 
 | 
| 查看次数: | 25477 次 | 
| 最近记录: |