2013-08-06 3 views
0

PHP에서 shell_exec을 사용하고 있는데, 같은 폴더에서 실행 파일을 사용하면 작동하지만 하위 폴더에서 실행 파일을 가리키면 더 이상 작동하지 않습니다.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 ***) 전화 : 예를 들어, 디렉토리 구조는 다음과 같다. 현재 /home/my를 유지하고이를 사용하는 경우, cd /home/my/php/script && php test.php처럼 스크립트를 실행 한 후 경로가 /home/my/php/script/입니다 실행하고 scirpt 경로를 실행에 makescreen.exe를 찾을 경우이 경우

은 여기, 그러나 /home/my/php/script/

입니다 way php /home/my/php/script/test.php 그러면 실행 경로가 현재 경로이고 여기에 /home/my이고 이 스크립트에서 찾을 수 없으므로 확실히 실패했습니다.

당신이 당신의 스크립트에서 /home/my/php/script/makescreen.exe를 사용하는 경우,이 절대 경로이고 당신이 어디에 있든 당신이 하위 폴더에 실행 파일을 넣어하려는 경우, 그것은 /home/my/php/script/

makescreen.exe을 찾을 것입니다. 스크립트에서 상대 경로 subfolder/makescreen.exe을 사용하고 스크립트가 올바르게 액세스 할 수 있는지 확인하십시오.

3

시도하여 간부는()

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

고마워요,하지만 여전히 똑같습니다. 이것은 서버 루트에서 이미 2 단계 깊이이며, 이제 다른 하위 폴더를 원합니다 - 이걸로 무엇이든해야합니까? 서버 루트에서 절대 경로를 사용해야합니까? –