2014-02-13 3 views
0

최근에 서버를 옮겨서 오랫동안 사용 해본 PHP 스크립트가 더 이상 작동하지 않습니다. 필자는 다중 컬 작업을 쉽게 수행 할 수있는 래퍼 클래스를 추적했습니다. 전체 스크립트 작업은 때때로 완료되기 시작하지만 대부분의 경우 실패합니다.curl_init가 NULL을 간헐적으로 반환합니다.

하지만, 내 테스트하는 동안 나는 스크립트가 실패 할 때 여기에 실패했음을 발견

$ch = curl_init(); 

스크립트가 $의 채널이 NULL했다 실패합니다. 문서 (php.net)는 성공시 리소스를 반환하고 NULL이 아닌 실패시 FALSE를 반환해야한다고 말합니다.

저는 우분투 12.04 서버를 사용하고 있습니다. 내가 말했듯이이 스크립트는 오랫동안 실행되었습니다. 그래서 몇 가지 생각 중 하나가 발생했습니다. 첫째, 내 호스팅 회사의 이미지가 최신 보안 패치 등으로 최신 버전이되어야합니다. PHP 패치가 있었는데 뭔가 엉망이 되었습니까? 둘째, 이전 머신 (또는 그 문제에 사용했던 다른 머신)에서 경험하지 못한 리소스 문제가 있습니다. 마지막으로, 호스팅 업체가 설치 한 이미지에 문제가 있습니다.

누구든지 이런 유형의 오류에 경험이 있다면 나는 그것을 듣고 싶습니다.

업데이트 :

$ch = curl_init(); 
echo '<br>Res: ' . var_dump($ch); 

반환 값 :

Res: NULL 
+0

정말 NULL을 반환합니까? 그 가치를 어떻게 인쇄하고 있습니까? See ['curl_init()'는 NULL을 자동으로 반환합니다.] (http://compgroups.net/comp.lang.php/curl_init-silently-returns-null/299307). TL : DR : var_export()가 아니라'var_dump()'를 사용하십시오. –

+0

@JonathonReinhart 감사합니다. var_export를 사용하고 있습니다. 귀하의 제안에 따라 var_dump 시도하고 질문을 업데이트했습니다. 그것은 여전히 ​​var_dump와 함께 NULL을 반환합니다. –

+0

''$ ch = curl_init()''과''var_dump ($ ch)''사이의 코드를 건너 뛰었습니다. 일반적으로''$ ch''는 cURL 옵션을 잘못 설정하면''null''으로 설정됩니다. 또한 "멀티 컬 (multi curl)"작업을 수행한다고 말했습니까? 다른 모든 cURL 핸들이 제대로 닫혀 있습니까? 충분한 메모리가 있습니까? – ub3rst4r

답변

0

나는 비슷한 문제를 가로 질러 와서, 내 생각 엔 curl_init() 내가하지 않는 몇 가지 이유를 들어, PHP 서버에서 비활성화되어 있다는 것입니다 알고있다 .

시스템에 curl_init()이 활성화되어 있는지 확인하고 스크립트 상단에 error-reporting(E_ALL);을 설정하여 문제의 원인을 확인하십시오. 내 경우에 보안상의 이유로 curl_init()이 사용 중지되었다는 경고가 표시됩니다.

관련 문제