Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP exec命令可以从终端工作,但不能从web工作_Php_Unix_Exec_Solaris_Scp - Fatal编程技术网

PHP exec命令可以从终端工作,但不能从web工作

PHP exec命令可以从终端工作,但不能从web工作,php,unix,exec,solaris,scp,Php,Unix,Exec,Solaris,Scp,我创建了一个简单的测试文件,名为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); ?> C

我创建了一个简单的测试文件,名为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.
该命令可以工作,但当我尝试从web上运行它时

http://localhost/test/exec.php
命令没有

有什么想法吗


提前感谢

您需要为运行Web服务器的用户创建从Web服务器到另一台服务器的ssh登录(例如www data、apache2等),否则scp命令将无法工作

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


如果尚未使用rsa密钥保护ssh登录以提高安全性

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

要真正诊断出哪里出了问题,请将stderr重定向到您可以读取它的地方

例如:

exec($yourcommand . " 2>&1", $out);
// print out the $out variable

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

请记住,当它在Web服务器下运行时,它运行的是不同的用户id,这意味着不同的帐户、不同的ssh密钥链等。。。e、 g.除了命令本身,所有内容都完全不同。浏览器/日志中是否有错误?secure.log或您试图连接的主机上的任何身份验证日志上的错误消息显示了什么?(即,它是否看到传入连接,它是否允许访问?@Joe我愿意打赌
scp
从未执行过,因此不会从那里期望太多。。。将scp保存在web用户的路径中没有多大意义。感谢Marc,他将尝试确保web服务器具有必要的权限。会让你不断更新。这应该不是必要的。用户在命令中指定:user@255.255.255.255The守护程序用户没有运行exec的权限。这已经用一个简单的ls命令进行了测试。谢谢你的意见
exec($yourcommand . " 2>&1", $out);
// print out the $out variable