2017-03-02 1 views
0

를 통해 호출 컬 파일을 알 수 있습니다. 통화 cli.php의는 어떻게 <strong>호 cli.php</strong></p> <p>내가 명령 줄을 통해 그것을 실행하고있는 CLI 또는 apache2handler

코드

echo "File 1 ".php_sapi_name(); // returns cli 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://localhost/curltest/step1.php?productId=12"); 
$response = curl_exec($ch); 
curl_close($ch); 

step1.php의 코드를 브라우저를 통해 ADMIN 실행 step1.php 그것이 apache2handler을 실행해야

echo " step1 ".php_sapi_name(); // returns apache2handler 
if(php_sapi_name()==='cli') { 
    // To do execute code regarding cli 
} 
if(php_sapi_name()==='apache2handler') { 
    // To do execute code regarding apache2handler 
} 

코드를 작성하고 cli는 diff를 작성합니다. 나는 제품을call-cli.php에서 받고 있습니다. 그래서 컬을 호출해야합니다 call-cli.php 그래서 저는 cli 파일을 통해 호출 된 컬이 apache2handler 또는 다른 제안 대신 cli를 반환하는 것을 발견하는 방법이 있는지 알고 싶습니까?

+0

당신이 실제로 묻는 것이 약간 명확하지 않습니다. 하지만 당신이 예상치 못한 'step1'에서 두 번째 결과를 얻은 것을 이해합니다. 왜 'cli'를 반환해야합니까? 이것은 http 요청을 통해 curl에 의해 호출되었으며 그 요청은 확실히'cli'에서 실행되지 않았습니다 ...'curl() '대신'exec()'와 같은 것을 사용해야합니다 ... – arkascha

+0

@arkascha 감사 귀하의 요점을 가지고, 희망 업데이트 된 질문은 분명하다. –

+0

두 가지 호출이 서로 다른 환경에서 실행되기 때문에 두 가지 호출간에 차이가 나는 잘못된 전략을 사용하고 있습니다. 대신에 다음 두 옵션 중 하나를 수행 할 수 있습니다. 1. 요청 인수를 curl' 호출에 추가하여 수신 측에서 다를 수 있거나 요청 된 측에서 검사 할 수있는 http 요청 헤더를 사용할 수 있습니다. – arkascha

답변

0

아니요, Curl은 웹 서버에서 처리하는 HTTP를 통해 브라우저처럼 step1.php 파일을 엽니 다. 이 경우 Apache이므로 apache2handler입니다.

그러나 PHP 스크립트는 터미널에서 실행되는 경우에만 cli을 출력합니다.

+0

예 productId에 대해서는 call-cli.php에서 호출해야합니다. 업데이트 된 질문이 분명합니다. –

0

call-cli.php의 curl 호출은 cli를 통해 컬링을 호출하지만, Apache를 통해 제공되는 step1.php의 결과를 표시하므로 코드에 apache2handler이 표시됩니다.

step1.php을 명령 줄 (예 : php step1.php)로 호출하면 cli을 반환합니다.

달성하고자하는 것이 확실하지 않으므로 질문을 명확히하십시오.

+0

@niraj Shah에게 감사드립니다. productId에 대해서는 call-cli.php에서 호출해야합니다. 업데이트 된 질문이 분명합니다. –

+0

그냥 자세히 :하지만 :'call-cli.php'의 url()'호출은 CLI를 통해 실행 파일'cURL'에 _ 행하지 않습니다! 이것은 PHP에로드 된'cURL' 확장 라이브러리에 대한 내부 함수 호출입니다. – arkascha