PHP shell_exec目录

时间:2013-08-06 05:45:26

标签: php exec executable shell-exec subdirectory

我在PHP中使用shell_exec,如果我在同一文件夹中使用可执行文件,则可以正常工作,但如果我在子文件夹中指向可执行文件则不再有效。

我有这个(有效):

shell_exec ("makescreen.exe /url=".$link."");

我想要这个(不起作用 - 它只是跳过执行):

shell_exec ("/screens/makescreen.exe /url=".$link."");

哦,路径处于Windows模式。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

尝试使用带有完整路径的exec()而不是相对路径

 $oldcwd = getcwd();
 chdir($oldcwd+"/screens");
 exec("makescreen.exe /url=".$link."");
  chdir($oldcwd); 

答案 1 :(得分:1)

注意绝对路径的差异。相对路径。执行路径。例如,您的目录结构是:

/home/my/php/script/test.php 
                   /makescreen.exe

并在您的PHP脚本中调用shell_exec(makescreen.exe ***)

在这种情况下,如果您执行类似cd /home/my/php/script && php test.php的脚本,则执行路径为/home/my/php/script/,scirpt将在执行路径中找到makescreen.exe,此处为/home/my/php/script/

但是,如果您目前留在/home/my并使用这种方式php /home/my/php/script/test.php,则执行路径是您当前的路径,此处为/home/my,脚本将找到{{1}在makescreen.exe,绝对是失败的。

如果您在脚本中使用/home/my,这是绝对路径,无论您身在何处,都会在/home/my/php/script/makescreen.exe中找到makescreen.exe

如果您想将可执行文件放在子文件夹中。您可以在脚本中使用相对路径/home/my/php/script/,并确保脚本可以正确访问它。