gpt4 book ai didi

php - 在 PHP 中传输文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:52 27 4
gpt4 key购买 nike

我必须将创建的 sql 文件从服务器 a 传输到服务器 b。目前我尝试以下但没有成功:

// Some SQL executions to fill and update the tables
( .. )

// Filename pattern
$fileName = "dump_".date("Y-m-d-H_i_s").".sql";

// Dump the tables and saves the output in dump directory
$dump = "mysqldump -u$USER -p$PASS $DB ".$this->dumpTables." > " . $this->path."dumps/". $fileName;

// Transfer the lastest sql file to the origin
$command = "scp " . $this->path."dbbackup/" . $fileName . " user@xxx.xxx.xxx.xxx:/PATH/dumps" . $fileName;

system($command, $retvalOrigin);
if ($retvalOrigin != 0) {
fwrite($this->logFileInstance, $this->date() . "Something went wrong! \r\n");
fwrite($this->logFileInstance, $this->date() . "$command! \r\n");
}

有什么问题吗?

如果我手动执行命令,一切都会好起来的。所以不存在权限问题。我的错误日志中没有意外的日志条目。如果我在没有任何变量的情况下复制命令并将其放入一个新的 php 文件中,然后调用它,就不会再出现错误了。起初我认为 scp 讨厌我,这就是为什么我用“rsync -ave”替换了“scp”。这没有给我任何错误,但不会将文件复制到原始服务器(再次没有错误日志!)。

scp -> $retvalOrigin = 1,源服务器上没有文件,没有错误日志

rsync -> $retvalOrigin = 0,源服务器上没有文件,没有错误日志

那有什么意义呢?

编辑:

路径是绝对的,执行用户和 www 数据的 SSH KEY - 不再需要登录,$retVal 仅包含 1/0,并且 NO in 不会用于那个 cron

最佳答案

确保使用 scp 命令的用户(很可能是 www-data)有使用 scp 的权限而不仅仅是你的系统用户。

还要确保使用绝对路径。

为了更好地报告错误,请使用“exec”来存储错误消息。'system' 将直接输出错误,当您在 cron 中使用它时很可能会丢失。

exec($command, $commandOutput, $retvalOrigin);

此外,如果命令需要有效的 shell,您可以尝试 shell_exec。

关于php - 在 PHP 中传输文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290132/

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