0

我创建了一个简单的测试文件,我们将其命名为 exec.php,内容如下:

<?php
    exec('scp -r /vhosts/malta/docs/www/mysite/uploads/www.mysite.com/images/promotions/xmas-survey user@255.255.255.255:/vhosts/mysite/docs/www/images/promotions/xmas-survey/',$out);
    print_r($out);
?>
Command Executed.

仅供参考:帐户用户不需要密码即可访问 255.255.255.255

问题在这里:

当我从终端运行这个文件时

php /vhosts/test/www/exec.php

该命令有效,但是当我尝试从网络上运行它时

http://localhost/test/exec.php

该命令没有。

有任何想法吗?

提前致谢

4

3 回答 3

0

您需要为运行网络服务器的用户(例如 www-data、apache2 等)创建从网络服务器到另一台服务器的 ssh 登录,否则 scp 命令将不起作用。

创建 ssh 登录后,该命令应该可以工作...

如果您还没有这样做,您可能希望使用 rsa 密钥保护 ssh 登录以提高安全性

于 2012-10-24T16:27:17.863 回答
0

问题可能是您需要指定 scp 的完整路径。Web 服务器用户通常在路径中没有相同的东西。

要真正诊断出了什么问题,请将 stderr 重定向到您可以从中读取它的地方。

例如:

exec($yourcommand . " 2>&1", $out);
// print out the $out variable
于 2012-10-24T16:44:23.743 回答
0

检查用户“www-data”是否具有运行 exec.php 文件所需的执行权限

于 2012-10-24T17:25:15.777 回答