curl_init () 함수가 작동하지 않습니다.

안녕하세요, POST 요청 내에서 PHP 포스트 요청을 시도합니다 내게 유용 할 수 있다고 생각하고 아래 코드를 제공합니다.

$sub_req_url = "http://localhost/index1.php";

$ch = curl_init($sub_req_url);
$encoded = '';

// include GET as well as POST variables; your needs may vary.
foreach($_GET as $name => $value) {
  $encoded .= urlencode($name).'='.urlencode($value).'&';
}

foreach($_POST as $name => $value) {
  $encoded .= urlencode($name).'='.urlencode($value).'&';
}

// chop off last ampersand
$encoded = substr($encoded, 0, strlen($encoded)-1);

curl_setopt($ch, CURLOPT_POSTFIELDS,  $encoded);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_exec($ch);
curl_close($ch);

index.php 파일을 만들고 index2.php는 같은 디렉토리에있는 또 다른 파일이며, 페이지를 열면 error.log 파일에 다음 오류가 표시됩니다.

[Sat Dec 18 15:24:53 2010] [error] [client ::1] PHP Fatal error:  Call to undefined function curl_init() in /var/www/testing1/index.php on line 5

내가 원하는 것은 게시 요청을 보내는 예약 양식을 가지고 게시 값을 처리하고 다시 게시 요청을 paypal에 보내려고합니다.

 

 

 

해결법

 

1. PHP에 대한 CURL 지원을 설치해야합니다.

우분투에서는 이것을 통해 설치할 수 있습니다.

sudo apt-get install php5-curl

apt-get을 사용하고 있다면 PHP 구성을 편집 할 필요가 없지만 Apache를 다시 시작해야합니다.

sudo /etc/init.d/apache2 restart

그래도 문제가 계속되는 경우 phpinfo ()를 사용하여 CURL이 설치된 것으로 표시되는지 확인하십시오. (그렇지 않은 경우 패키지를 설치하지 않는 이유를 묻는 또 다른 질문을 열어야 할 수도 있습니다.)

PHP CURL 설명서에는 설치 설명서가 있습니다.

 

2. Windows의 경우 php.ini에서 ; 주석을 제거하십시오.

Windows의 경우 php.ini에서 ; 를 제거하여 아래 줄의 주석 처리를 제거하십시오.

;extension=php_curl.dll

아파치 서버를 다시 시작하십시오.

 

3.우분투의 경우 extension = php_curl.so를 php.ini에 추가

우분투의 경우 extension = php_curl.so를 php.ini에 추가하십시오.

extension = php_curl.so

 그런 다음 sudo 서비스 apache2 restart

sudo /etc/init.d/apache2 restart

 

 

 

이것은 일반적으로 자동으로 처리되지만 상황 (예 : 공유 개발 환경)은 수동으로 다시 활성화해야하는 상황이 있습니다.

지문은 다음 세 가지 조건 모두와 일치합니다.

4. 우분투 16.04에서 steps.My PHP 7.0 버전을 사용하고 있어요.

나는 우분투 16.04에서 steps.My PHP 버전을 사용하여 7.0 일하고 있어요

나는이 링크에서 자세한 정보를 확인했다.

 

5.제 경우에는 Xubuntu에서 libcurl3 libcurl3-dev 라이브러리를 설치해야했습니다.

제 경우에는 Xubuntu에서 libcurl3 libcurl3-dev 라이브러리를 설치해야했습니다. 이 명령으로 모든 것이 작동했습니다 :

sudo apt-get install curl libcurl3 libcurl3-dev php5-curl 

 

 

6. Windows 플랫폼에서 PHP7 / Apache 2.4를 사용하여 이 오류가 발생했습니다.

Windows 플랫폼에서 PHP7 / Apache 2.4를 사용하여이 오류가 발생했습니다. curl_init는 CLI에서는 작동했지만 Apache 2.4에서는 작동하지 않았습니다. libeay32.dll 및 ssleay32.dll에 대한 LoadFile 지시문을 추가하여이 문제를 해결했습니다.

LoadFile "C:/path/to/Php7/libeay32.dll" 
LoadFile "C:/path/to/Php7/ssleay32.dll" 
LoadFile "C:/path/to/Php7/php7ts.dll" 
LoadModule php7_module "C:/path/to/Php7/php7apache2_4.dll" 

 

 

7.이 버그를 수정하려면 다음과 같이하십시오.

이 버그를 수정하려면 다음과 같이하십시오.

1 단계 :

C:/(path to php folder)/php.ini 
enable extension=php_curl.dll 

2 단계 :

이것을 Apache / conf / httpd.conf에 추가하십시오 (libeay32.dll, ssleay32.dll, libssh2.dll은 php7 폴더에서 직접 찾습니다)

# load curl and open ssl libraries 
 LoadFile "C:/(path to php folder)/libeay32.dll" 
 LoadFile "C:/(path to php folder)/ssleay32.dll" 
 LoadFile "C:/(path to php folder)/libssh2.dll" 

 

 

9. curl_init ()는 PHP 7에서 php-curl이 활성화되어 있어도 정의되지 않았습니다.

시스템에 여러 버전의 PHP가 설치되어있는 경우에 대한 답을 추가하면 PHP 컬 패키지를 이미 설치했지만 Apache는 여전히 동일한 오류를 표시합니다.

curl_init ()는 PHP 7에서 php-curl이 활성화되어 있어도 정의되지 않았습니다.

 

 

10. Windows에서 PHP와 Apache를 통해 Curl을 사용하려고 시도하는 중 ...

(Windows에서 PHP와 Apache를 통해 Curl을 사용하려고 시도하는 중 ...)

계속 오류가 발생했습니다. 정의되지 않은 함수 'curl_init ()'호출

필자는 php.ini 파일에서이 줄로 컬을 활성화했는지 확인했습니다. extension = php_curl.dll

extension_dir 변수가 다음과 같이 올바르게 설정되었는지 확인했습니다. extension_dir = "ext"

다른 사람들이 포럼에서 말한 모든 것을하고 curl이 phpinfo ()에 대한 호출에서 나타나지 않고 위와 같은 오류가 계속 발생했습니다.

마지막으로 아파치는 기본적으로 C : \ Windows 폴더에서 php.ini를 찾는다. PHP 설치 폴더에서 php.ini를 변경했습니다. php.ini를 C : \ Windows에 복사하면 모든 것이 잘 작동합니다.

그걸 알아내는 데 영원히 동원되었으므로 누군가에게 도움이 될 경우를 대비하여 게시 할 것이라고 생각했습니다.

 

11.RusAlex 대답은 바로 아파치에 대해 curl을 설치하고 활성화하고 아파치 서비스를 다시 시작해야한다는 것입니다.

RusAlex 대답은 바로 아파치에 대해 curl을 설치하고 활성화하고 아파치 서비스를 다시 시작해야한다는 것입니다.

sudo apt-get install php5-curl 
sudo service apache2 restart 

내 우분투 서버에서 nginx와 php5-fpm을 사용했지만 다음과 같은 문제가 발생했습니다. 나는 nginx와 php5-fpm을 다시 시작해야만했다.

sudo service nginx restart 
sudo service php5-fpm restart 

하지만 나는 php5-fpm 프로세스가 작동하지 않는데, 이는 우분투의 버그 다. https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 그래서 모든 유휴 php5-fpm 프로세스를 종료시켜 php5-fpm을 다시 시작하여 컬 모듈이 실제로로드되도록해야했습니다.

sudo kill <Process Id of php5-fpm Process)

 

 

12.함수 curl_int (); 서버 오류를 일으키고, sudo를 설치하십시오.

function curl_int(); 서버 오류를 일으키고, sudo를 설치하십시오.

apt-get install php5-curl apache2 서버를 다시 시작합니다 .. 매력처럼 작동합니다.

 

13.이 답변은 https 요청입니다.

이 답변은 https 요청입니다.

컬에는 루트 인증서가 내장되어 있지 않습니다 (대부분의 최신 브라우저처럼). 명시 적으로 cacert.pem 파일을 지정해야합니다.

  curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem'); 

이것이 없으면, 컬링은 ssl을 통해 다시 전송 된 인증서를 검증 할 수 없다. Curl에서 SSL을 사용할 때마다이 동일한 루트 인증서 파일을 사용할 수 있습니다.

여기서 cacert.pem 파일을 얻을 수 있습니다. http://curl.haxx.se/docs/caextract.html

PHP cURL이 HTTPS에서 작동하지 않음

 

14.PHP 7 및 Windows x64의 경우

PHP 7 및 Windows x64의 경우

libeay32.dll, libssh2.dll 및 ssleay32.dll은 apache / bin에 있으면 안되며 php 디렉토리에만 존재하고 php 디렉토리를 시스템 환경 변수에 추가해야합니다. 나를 위해 일하는이.

물론 php.ini에서 php_curl.dll도 활성화해야합니다.

 

15.그냥 wamp 서버의 마지막 버전을 설치하십시오.

그냥 wamp 서버의 마지막 버전을 설치하십시오.

 

 

 

 

출처 : https://stackoverflow.com/questions/4477535/curl-init-function-not-working

출처 : https://cnpnote.tistory.com/entry/curlinit-%ED%95%A8%EC%88%98%EA%B0%80-%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4

+ Recent posts