我在PHP中使用shell_exec,如果我在同一文件夹中使用可执行文件,则可以正常工作,但如果我在子文件夹中指向可执行文件则不再有效。
我有这个(有效):
shell_exec ("makescreen.exe /url=".$link."");
我想要这个(不起作用 - 它只是跳过执行):
shell_exec ("/screens/makescreen.exe /url=".$link."");
哦,路径处于Windows模式。
感谢您的帮助。
答案 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/
,并确保脚本可以正确访问它。