2013-08-06 3 views
0

Я использую shell_exec в PHP, который работает, если я использую исполняемый файл в той же папке, но больше не работает, если я укажу исполняемый файл в подпапке.PHP shell_exec directory

У меня есть это (который работает):

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 в сценарии, это абсолютный путь, и где бы вы, он найдет makescreen.exe в /home/my/php/script/

И если вы хотите поместить исполняемый файл в подпапке. вы можете использовать относительный путь subfolder/makescreen.exe в своем скрипте и убедиться, что скрипт может получить к нему доступ правильно.

3

попробовать с помощью Exec() с указанием полного пути, а не относительный путь

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

Спасибо, но все-таки одно и то же. Это уже на 2 уровня от корня сервера, и теперь мне нужна еще одна подпапка - это что-то с этим делать? Должен ли я использовать абсолютный путь от корня сервера? –