복붙노트

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

PHP

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. ==============================

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

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

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

    sudo apt-get install php5-curl
    

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

    sudo /etc/init.d/apache2 restart
    

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

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

  2. ==============================

    2.Windows의 경우 관심있는 사람이 있으면 php.ini에서;를 제거하여 다음 줄의 주석 처리를 제거하십시오.

    Windows의 경우 관심있는 사람이 있으면 php.ini에서;를 제거하여 다음 줄의 주석 처리를 제거하십시오.

    ;extension=php_curl.dll
    

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

  3. ==============================

    3.우분투의 경우 : 필요한 경우 extension = php_curl.so를 php.ini에 추가하십시오. 그런 다음 sudo 서비스 apache2 restart

    우분투의 경우 : 필요한 경우 extension = php_curl.so를 php.ini에 추가하십시오. 그런 다음 sudo 서비스 apache2 restart

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

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

  4. ==============================

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

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

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

  5. ==============================

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

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

    sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
    
  6. ==============================

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

    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. ==============================

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

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

  8. ==============================

    8.1 단계 :

    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. ==============================

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

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

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

  10. ==============================

    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. ==============================

    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. ==============================

    12.함수 curl_int (); 서버 오류를 일으키고, sudo를 설치하십시오. apt-get install php5-curl apache2 서버를 다시 시작합니다 .. 매력처럼 작동합니다.

    함수 curl_int (); 서버 오류를 일으키고, sudo를 설치하십시오. apt-get install php5-curl apache2 서버를 다시 시작합니다 .. 매력처럼 작동합니다.

  13. ==============================

    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. ==============================

    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. ==============================

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

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

  16. from https://stackoverflow.com/questions/4477535/curl-init-function-not-working by cc-by-sa and MIT license