繁体   English   中英

PHP exec命令可从终端运行,但不能从网络运行

[英]PHP exec command works from terminal but not from web

我创建了一个简单的测试文件,并使用以下内容将其称为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

该命令没有。

有任何想法吗?

提前致谢

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

创建ssh登录后,该命令应该可以使用...

如果您尚未使用rsa密钥保护ssh登录,则可能需要更好的安全性

可能是错误的,您需要指定scp的完整路径。 Web服务器用户通常在路径中没有相同的事物。

要实际诊断出问题所在,请将stderr重定向到您可以从中读取的地方。

例如:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM