0

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

我有这个(有效):

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

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

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

哦,路径处于 Windows 模式。

谢谢你们的帮助。

4

2 回答 2

3

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

 $oldcwd = getcwd();
 chdir($oldcwd+"/screens");
 exec("makescreen.exe /url=".$link."");
  chdir($oldcwd); 
于 2013-08-06T05:50:34.890 回答
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/并且脚本会makescreen.exe在执行路径中找到,这里是/home/my/php/script/

但是,如果您当前留在/home/my并使用这种方式php /home/my/php/script/test.php,那么执行路径就是您当前的路径,这里是/home/my,并且脚本会找到makescreen.exein /home/my,肯定会失败。

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

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

于 2013-08-06T06:05:12.547 回答