解决fopen() -在没有777的远程服务器上的权限被拒绝


Solving fopen() - permission denied on remote server without 777

我很难相信这个问题在这里没有答案,但是我找了又找,还是找不到。

我在远程服务器上使用fopen(),并且我只有FTP访问权限-没有其他权限。

当我尝试创建或打开一个文件进行写访问时,我遇到了以下错误:

警告:fopen(entries/newsletter.csv): failed to open stream: Permission denied in/var/www/sites/xxx/public_html/index.php第24行错误:无法打开文件。您的条目未保存。

我已经尝试将文件权限更改为777并打开现有文件,并且它有效!但这不是推荐的解决方案,因为777是如此不安全。

有什么方法可以通过FTP解决这个问题而不诉诸777吗?

可以不改变打开时的参数,以尝试简单地以只读模式打开吗?PHP fopen()选项手册

fopen("csv/newsletter.csv", "r");  

使用最少的权限,但是你需要有读访问权限。当然,您不能写入文件。另外,777包含可执行位,所以您可能只需要666。

你也可以尝试以用户身份通过FTP连接,并确保用户对文件的权限是rw(6),然后其他用户不需要该设置,因此他们可以只读。

可选地通过FTP接口,也许chmod()要读/写的文件在打开之前,然后chmod读之后。