【问题标题】:Solving fopen() - permission denied on remote server without 777解决 fopen() - 没有 777 的远程服务器上的权限被拒绝
【发布时间】:2016-09-22 14:35:47
【问题描述】:

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

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

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

警告:fopen(entries/newsletter.csv):未能打开流:权限被拒绝 /var/www/sites/xxx/public_html/index.php 第 24 行 错误:无法打开文件。您的条目未保存。

我已尝试将文件权限更改为 777 并打开现有文件,它可以工作!但这不是推荐的解决方案,因为 777 太不安全了。

有什么方法可以在不使用 777 的情况下通过 FTP 解决这个问题?

【问题讨论】:

    标签: php ftp fopen php-5.6


    【解决方案1】:

    你可以不改变打开的参数来尝试简单地以只读模式打开吗? PHP Manual for fopen() options.

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

    这使用最少的权限,但您确实需要具有读取权限。当然,您不能写入文件。此外,777 包含可执行位,因此您可能只需要 666。

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

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

    【讨论】:

    • 不幸的是我需要写入文件。我只有一次登录 FTP。
    • 您可以将一个登录的文件权限设置为 rw (6),然后将其他登录设置为不同的值。另一个选项可能是在您通过 FTP 界面访问文件时对文件进行 chmod (666),然后再使用另一个 chmod 将其设置回来。
    • 很遗憾,我无法设置登录权限。我很有限!
    最近更新 更多