[英]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.