2017-01-18 1 views
0

항공권을 티켓 시스템에 업로드 할 수있는 양식이 있으며, 첨부 파일을 전달할 수 있어야합니다. POST에 CURLFile을 추가하자마자 CURL이 작동을 멈추는 것처럼 보입니다. 나는 요청도 보내지 않는 것을 건의 기록됩니다 수신 파일과 아무것도 "의 error_log ("foo는 ")를 추가CURLFile이 CURL 작동을 멈추게합니다. CURL Error 43

내 CURL 코드는 다음과 같습니다.

$data = new CURLFile(
    $_FILES['attachment']['tmp_name'][0], 
    $_FILES['attachment']['type'][0], 
    $_FILES['attachment']['name'][0] 
); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://192.168.0.56/api-test/foo.php'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, [ 
    'some_file' => $data 
]); 
$response = curl_exec($ch); 

var_dump($response); 

위해서 var_dump 출력 : 부울 (거짓)

curl_errno 출력 : 43

curl_error에게 아무것도 발생하지

CURLOPT_VERBOSE 에러의 ($ CH) 출력 :

* Hostname 192.168.0.56 was found in DNS cache 
* Trying 192.168.0.56... 
* Connected to 192.168.0.56 (192.168.0.56) port 80 (#0) 
* Connection #0 to host 192.168.0.56 left intact 
+1

디버깅 할 때 echo가 아닌 var_dump를 사용하십시오. 컬을 디버깅 할 때 CURLOPT_VERBOSE 및 curl_errno() 및 curl_error()도 사용하십시오. 그 (것)들을 고치고, var_dump, CURLOPT_VERBOSE, 및 과실 ($ ch) 둘 다의 결과를 얻고, 돌아 오십시오 – hanshenrik

+0

안녕 @hanshenrik, 끝났다 수정 한 응답 –

+0

재미있는, 43는'CURLE_BAD_FUNCTION_ARGUMENT : 내부 오류이다. 함수가 잘못된 매개 변수로 호출되었습니다. '- function ecurl_setopt ($ ch, int $ option, $ value)와 같은 오류 감지를 curl_setopt에 추가하십시오. bool {$ ret = curl_setopt ($ ch, $ option, $ value) ; ($ cur);} return (true);}'를 반환하고 대신에 그것을 사용합니다. curl_setopt 중 어딘가에 오류가 있는지 확인하십시오. – hanshenrik

답변

0

나중에이 오류가 발생하는 경우 사용 권한이 문제가되는 것으로 나타났습니다. 스크립트를 추가하여 파일을 업로드 할 때 temp 폴더가 아닌 다른 폴더에 저장 한 다음 위의 코드를 저장 파일에 적용하여 작동했습니다.