【问题标题】:php ftp_get() returns permission deniedphp ftp_get() 返回权限被拒绝
【发布时间】:2012-09-28 17:57:55
【问题描述】:

我正在使用 ftp 上传脚本将一台服务器传输到另一台服务器。它在浏览器窗口中运行良好,并且在 ssh 命令行中运行良好: php /var/www/vhosts/domain.com/httpdocs/ftp_shell.php

但是当我从 cron 运行完全相同的命令时,我得到了这个:

PHP 警告:ftp_get(ftp.tmp):打开流失败:第 516 行 /var/www/vhosts/domain.com/httpdocs/ftp_shell.php 中的权限被拒绝 PHP 警告:ftp_get():在第 516 行的 /var/www/vhosts/domain.com/httpdocs/ftp_shell.php 中打开 ftp.tmp 时出错

我在第 516 行查看,即:

    if((ftp_get($ftp_from,"ftp".$tmp.".tmp",$fname,FTP_BINARY) ||
        ftp_get($ftp_from,"ftp".$tmp.".tmp",$fname,FTP_ASCII)) &&
       (ftp_put($ftp_to,$fname,"ftp".$tmp.".tmp",FTP_BINARY) ||
        ftp_put($ftp_to,$fname,"ftp".$tmp.".tmp",FTP_ASCII)) &&
       ftp_site($ftp_to,"chmod ".base_convert($chmod,10,8)." $fname") &&
       f_size()&&unlink("ftp".$tmp.".tmp")) {echoout(" (".$size_b." bytes) ok<br>");$count_f++;}

我知道它正在将文件写入临时文件,但为什么它允许我在浏览器和命令行中执行此操作,而不是 cron?

【问题讨论】:

  • 您是否在浏览器会话中使用用户名/密码?
  • 你在哪个 linux 发行版上?你也可以粘贴你的 cron 行吗?
  • 没有用户/通行证。 CentOS 6.
  • cron 行:* * * * * php /var/www/vhosts/domain.com/httpdocs/ftp_shell.php

标签: php ftp cron


【解决方案1】:

可能临时文件是由 php 脚本(apache 用户)创建的,您想从 cron 作业(root 用户)中读取它。出于安全原因,临时文件不能从一个用户读取给其他用户。

您必须将您的 cron 作业更改为由 apache 用户执行,或者您可以将临时文件的权限更改为所有人都可以读取,但不建议这样做,因为任何其他进程都可以读取该文件。

【讨论】:

  • 临时文件是即时创建的,然后在不再需要时删除。如何将用户更改为 apache?这是 php 中的 possbiel 吗?
【解决方案2】:

在 cron 下运行的作业的默认工作目录与从网络服务器和/或命令行运行的作业不同。很可能在 cron 中被用作默认目录的任何目录都没有适当的权限供 cron 作业使用。

尝试使用绝对路径,例如

ftp_get($ftp_from,"/real/path/to/file/ftp".$tmp.".tmp",$fname,FTP_BINARY)
                   ^^^^^^^^^^^^^^^^^^^

而不是您使用的相对路径。

【讨论】:

  • 错误是“Permission denied”,表示文件存在,只是没有权限读取。
  • 可能,但是如果导致文件的任何目录也不可读,您也会获得权限被拒绝。认为它相当于银行金库中间的一堆黄金。它只是坐在那里等待,但首先你必须进入保险库。
【解决方案3】:

错误提示:

PHP Warning: ftp_get(ftp.tmp): failed to open stream

那一行是:

if((ftp_get( $ftp_from, "ftp" . $tmp . ".tmp", $fname ...

所以错误必须在一个空的$tmp变量中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2013-08-07
    • 2018-03-19
    • 2015-07-15
    相关资源
    最近更新 更多