2013-03-12 1 views
-2

내 서버에서 exec() 기능을 실행하지 않습니다. 거기에 하지만 내 PHP 스크립트는이 간부가() functios :php exec ('cd executables /') 대체

exec('cd executables/ && php executables/import_run.php 3 en_US > /includes/work/result_d0169bb6.log 2>&1 &'); 

이 줄 PHP에서 할 그리고는 자신과이를 교체 할 수 있습니다 무슨 (비 간부()) 기능 ?

+1

당신은'executables'로 이동 한 다음 출력을 파일로 리다이렉트 (detirect)하는 프로세스의 일부 매개 변수로'import_run.php' 스크립트를 실행합니다. 따라서,'import_run.php'를 포함하고있는 것에 따라, 현재 PHP 실행 컨텍스트에 포함시킬 수 있습니다. – MatRt

+1

import_run은 아마도 쉘 실행 명령을 실행하는 이유 중 하나입니다. 서버가 잠겨있어 exec가 실행되지 않는 경우에는 작동하지 않습니다. –

답변

1

이 줄은 exec 명령 cd executables/ && php executables/import_run.php 3 en_US > /includes/work/result_d0169bb6.log 2>&1 &입니다. :)

명령 자체 것이다 :

  1. 변경 executables/에 작업 디렉토리 (cd).
  2. 디렉토리 변경이 성공했다고 가정하고 (&&) PHP는 executables/import_run.php 파일을 실행하고 3en_US의 두 인수를 전달합니다. 참고이 파일은 현재 스크립트 (exec(...) 행이있는 파일)에 관계없이 executables/executables/import_run.php 경로에 있다고 가정합니다.
  3. 모든 표준 출력은 includes/work/result_d0169bb6.log (>) 파일로 리디렉션됩니다. 모든 표준 오류 출력은 동일한 파일 (2>&1)로 재 지정됩니다. 참고이 파일은 현재 스크립트와 관련하여 executables/includes/work/result_d0169bb6.log 경로에 있다고 가정합니다.
  4. 이 프로세스는 백그라운드에서 실행하라는 메시지가 표시됩니다 (&).

내 생각 엔 당신이 (당신이 executables/ 디렉토리에 이미있어 이후)에 cdphp executables/import_run.php를 호출하지 않으려는 것입니다. 대신 php import_run.php으로 전화해야합니다.

+0

내 서버에서 "exec"를 실행할 수 없다는 점을 잊어 버렸습니다. 그래서 이것을 exec가 아닌 exec 줄로 바꾸십시오. – dazzafact

+0

명령 줄에서 직접 명령을 실행 해 보았습니까? 특히, 다음과 같은 :'cd/absolute/path/to/executables && php import_run.php 3 en_US> /includes/work/result_d0169bb6.log 2> & 1 &'. – adamdunson