2016-05-03 210 views
0

如何从PHP或HTML执行shell脚本文件。 sh文件位于localhost目录之外,还有许多其他sh文件由第一个sh文件启动。如何从php/html执行shell脚本?

说本地主机目录是 /opt/lampp/htdocs/xampp/test 并且sh文件的位置是/home/user/scripts/run.sh

run.sh将从/opt/lampp/htdocs/xampp/test/upload上传的一些文件复制到/home/user/scripts/file并执行一些其他.sh文件。

我试过很多方法,PHP没有成功 像

<?php $output = shell_exec('sh /home/user/script/run.sh'); echo "$output"; ?> 

<?php 
shell_exec("/home/user/server/run.sh"); 
?> 

,但没有运气。 我无法将sh文件放在CGI目录中,因为它依赖于其他脚本和文件。如何从当前呈现的目录运行脚本。

+0

你试图执行shell脚本之前,改变在PHP工作目录,通过使用CHDIR( “/ home/user中/脚本/”)或了shell_exec(“CD/home/user/script/sh /home/user/script/run.sh')? – gmfm

+0

不工作它没有执行任何操作。 – anonymous

回答

0

这很可能是您没有任何环境变量设置为从php执行脚本的用户。这可能是用户名组apache:apache。您应该为PATH设置一些环境变量,以便知道可执行文件的位置。你可以或者指向sh/usr/bin/sh

<?php $output = shell_exec('/usr/bin/sh /home/user/script/run.sh'); echo "$output"; ?>

或登录到服务器并echo $PATH。然后复制粘贴到putenv功能:

putenv('PATH={your_paths}'); 
$output = shell_exec('sh /home/user/script/run.sh'); echo "$output"; 
+0

我将变量设置为putenv,但它只执行run.sh中的echo命令,但run.sh有链接来运行其他bash脚本(使用./而不使用sh,因为sh不适用于该文件)但那是不执行 – anonymous

+0

太好了,所以你现在就执行它。现在,它是关于找出你在bash脚本中的相对路径:http://unix.stackexchange.com/questions/17717/refer-to-a-file-under-the-same-directory-of-a-script-found-在路径中,你可能正在处理在你的bash和apache中调用脚本的相对路径,调用run.sh脚本,不知道它们在哪里。我认为我的回答可以回答你的问题,你现在有一个执行脚本。 – DataHerder