2012-03-12 2 views
0

PHP CLI에 요청을 보내는 응용 프로그램을 작성하고 있습니다. 그러나, 내가 응용 프로그램을 실행하려고하면 PHP가 실행 스크립트를 찾을 수 없다는 불평.C에서 PHP CLI를 호출하는 방법은 무엇입니까?

다음은 관련 코드입니다 :

char *params[] = { 
    "/usr/bin/php", 
    "-f /var/www/test/php/tracker/gps-upload-sh.php", 
    imei, 
    rmc, 
    (char *) 0 
}; 
signal(SIGCHLD, SIG_IGN); 
pid_t pID = fork(); 
if (pID == 0) { 
    if(execv("/usr/bin/php", params) == -1) { 
     perror("Failed to call php."); 
     _exit(1); 
    } 
    _exit(0); 
} 

출력 :

$ ./socket 
Could not open input file: /var/www/test/php/tracker/gps-upload-sh.php 
^C 

파일 : 직접

$ ls -l /var/www/test/php/tracker/gps-upload-sh.php 
-rwxr-xr-x 1 onik onik 6707 2012-03-09 16:00 /var/www/test/php/tracker/gps-upload-sh.php 

실행 (REQUIRED_PARAMS가 같은 곳 execv와에서 전달 된 것과 같은) :

$ php -f /var/www/test/php/tracker/gps-upload-sh.php [REQUIRED_PARAMS] 
OK 

어떻게해야합니까?

답변

3

(가) -f 별도의 매개 변수에 경로를 분리하십시오 :

char *params[] = { 
    "/usr/bin/php", 
    "-f", 
    "/var/www/test/php/tracker/gps-upload-sh.php", 
    imei, 
    rmc, 
    (char *) 0 
}; 

(. 이것은 당신이 두 사이에 공백을 넣어와 쉘이하는 일이다)

또는

의 제거 -f과 경로 사이의 공백은 다음과 같습니다.

char *params[] = { 
    "/usr/bin/php", 
    "-f/var/www/test/php/tracker/gps-upload-sh.php", 
    imei, 
    rmc, 
    (char *) 0 
}; 
+0

감사합니다. 첫 번째 제안 일했다! 나는 그것이 정말로 간단했다라고 생각했다, 완전히 그것을 놓쳤다 :) – onik

관련 문제