我正在使用 ftp 上传脚本将一台服务器传输到另一台服务器。它在浏览器窗口中运行良好,并且在 ssh 命令行中运行良好:php /var/www/vhosts/domain.com/httpdocs/ftp_shell.php
但是当我从 cron 运行完全相同的命令时,我得到了这个:
PHP 警告:ftp_get(ftp.tmp):无法打开流:/var/www/vhosts/domain.com/httpdocs/ftp_shell.php 中的权限被拒绝,第 516 行 PHP 警告:ftp_get():打开 ftp.tmp 时出错/var/www/vhosts/domain.com/httpdocs/ftp_shell.php 在第 516 行
我查看了第 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?