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():ftp.tmpを開くときにエラーが発生しました516行目の/var/www/vhosts/domain.com/httpdocs/ftp_shell.php
私は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では実行できないのはなぜですか?