gpt4 book ai didi

php ftp_get() 返回权限被拒绝

转载 作者:行者123 更新时间:2023-12-03 18:41:56 25 4
gpt4 key购买 nike

我正在使用 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 中执行此操作?

最佳答案

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

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

关于php ftp_get() 返回权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com