2013-08-06 55 views
0

我在PHP中使用shell_exec,如果我在同一个文件夹中使用可执行文件,但如果我在子文件夹中指向可执行文件,则不起作用。PHP的shell_exec目录

我有这个(工作):

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

我想有这个(不工作 - 它只是跳过执行):

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

哦,路径在Windows模式下。

感谢您的帮助球员。

回答

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,并且脚本将找到makescreen.exe/home/my,肯定失败。

如果您在脚本中使用/home/my/php/script/makescreen.exe,这是绝对路径无论你在哪里,它会在/home/my/php/script/

找到makescreen.exe如果你想要把可执行文件中的子文件夹。您可以在脚本中使用相对路径subfolder/makescreen.exe,并确保脚本可以正确访问它。

3

尝试使用EXEC()的完整路径,而不是相对路径

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

谢谢,但仍然是同样的事情。这是从服务器根目前已经两层,现在我想要另一个子文件夹 - 这是必须做任何事情吗?我应该使用从服务器根目录的绝对路径吗? –