programing

PHP 치명적 오류: 정의되지 않은 함수 curl_init() 호출

goodsources 2022. 11. 19. 11:36
반응형

PHP 치명적 오류: 정의되지 않은 함수 curl_init() 호출

POST Request에서 PHP POST Request를 시도합니다.코드는 다음과 같습니다.

$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

제가 원하는 것은 포스트 리퀘스트를 보내는 예약 양식을 받는 것입니다.그러면 post 값을 처리하여 paypal로 다시 post request를 보내고 싶습니다.

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

Ubuntu에서는 다음 방법으로 설치할 수 있습니다.

sudo apt-get install php5-curl

apt-get을 사용하는 경우 PHP 설정을 편집할 필요는 없지만 Apache를 재시작해야 합니다.

sudo /etc/init.d/apache2 restart

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

PHP CURL 설명서에 설치 매뉴얼이 있습니다.

Windows 의 경우는, 관심 있는 유저가 있는 경우는, php.ini 에서 다음의 행(; 를 삭제해 주세요)의 코멘트를 해제합니다.

;extension=php_curl.dll

Apache 서버를 재시작합니다.

ubuntu 16.04에서 동작하는 것을, 다음의 순서로 취득했습니다.내 php 버전은 7.0이었다.

sudo apt-get install php7.0-module

sudo 서비스 apache2 재시작

자세한 내용은 이쪽 링크 체크에서 확인했습니다.

: Ubuntu를 합니다.extension=php_curl.so에 따라 합니다. ★★★★★★★★★★★★★★★.sudo service apache2 restart

이는 일반적으로 자동으로 처리되지만, 공유 개발 환경 등에서는 수동으로 다시 활성화해야 하는 상황이 발생할 수 있습니다.

지문은 다음 3가지 조건에 모두 일치합니다.

  1. curl_init() 호출 시 치명적인 오류 발생
  2. php_info에 curl 모듈 작성자가 표시됩니다(curl이 설치되어 사용 가능).
  3. 또한 php_info에는 curl 구성 블록이 표시되지 않습니다(curl이 로드되지 않았습니다).

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

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

, PHP가 이미 되어 있는 할 수 있는 에 대한 합니다.php-curl아파치

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

이 버그를 수정하기 위해 다음과 같이 했습니다.

  1. »php.ini 이 해제합니다: 、 이 、 : 、 이 、 file file file file file file file file.extension=php_curl.dll
  2. »php.ini 이 해제합니다: 、 이 、 : 、 이 、 file file file file file file file file.extension_dir = "ext"
  3. 빌트인 서버를 사용하고 있었기 때문에, NetBENS 를 재기동했습니다.

Windows PHP7 / Apache 2.4 。 curl_initCLI cli Apache 2 . 4 cli cli cli 。는 그것을 했다.LoadFile 및 : libeay32.199 "sleay32.199":

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"

다음 답변은 https 요청에 대한 것입니다.

Curl에는 루트 인증서가 내장되어 있지 않습니다(대부분의 최신 브라우저와 마찬가지로).cacert.pem 파일을 명시적으로 가리켜야 합니다.

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

이것이 없으면 curl은 ssl을 통해 반송된 증명서를 확인할 수 없습니다.SSL을 컬로 사용할 때마다 동일한 루트 인증서 파일을 사용할 수 있습니다.

cacert.pem 파일은 http://curl.haxx.se/docs/caextract.html 에서 구할 수 있습니다.

참조 PHP cURL이 HTTPS와 함께 작동하지 않음

순서 1:

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

하다.;★★★★★★★★★★★★★★★★★」

순서 2:

을 더하면 됩니다.Apache/conf/httpd.conf는 php7 폴더에서 직접 검색) (libeay32.199, ssleay32.199, libssh2.1999는 )

# 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"

이 문제가 있었지만, 여기서 답을 찾았습니다.https://askubuntu.com/questions/1116448/cannot-enable-php-curl-on-ubuntu-18-04-php-7-2

필요:

sudo a2dismod php7.0

그리고:

sudo a2enmod php7.2

그 후, 다음과 같이 입력합니다.

sudo service apache2 restart

Ubuntu의 다음 버전으로 시스템을 업그레이드한 후였습니다.내가 발견한 다른 답변들은 대부분 지적한 PPA에 대한 나쁜 증명서 때문에 오래된 것이었지만, 어쨌든 효과가 없었을 것이다.실제 문제는 이전 버전의 php를 비활성화하는 것이었습니다.

솔루션 검색:

https://askubuntu.com/questions/1116448/cannot-enable-php-curl-on-ubuntu-18-04-php-7-2

PHP 7.x와 같은 Windows의 새로운 버전의 PHP에서는 이전 답변에서 제시된 해당 구성 행이 변경되었습니다.다음 행의 주석 해제(행의 선두에 있는; 삭제)가 필요합니다.

extension_dir = "ext"
extension=curl

(Windows에서 PHP 및 Apache를 통해 Curl 작업을 시도 중...)

정의되지 않은 함수 'curl_init()'에 호출하라는 오류가 계속 표시됩니다.

내 php.ini 파일: extension=syslog_syslog.syslog에서 curl을 활성화했는지 확인했습니다.

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

포럼에서 다른 사람들이 말하는 모든 것을 하고 있었는데, phpinfo()에 대한 호출에 컬이 표시되지 않았고, 위에서 계속 같은 오류가 발생했습니다.

마침내 Apache가 기본적으로 C:에서 php.ini를 찾는다는 것을 알게 되었습니다.\Windows 폴더.PHP 설치 폴더에서 php.ini를 변경하고 있었습니다.php.ini를 C에 복사한 후:\Windows, 모든 것이 성공했습니다.

그걸 알아내는 데 시간이 오래 걸려서 혹시 다른 사람에게 도움이 될지 몰라서 글을 올려야겠다고 생각했어요.

PHP 7 및 Windows x64의 경우

libeay32.directory, libssh2.directory 및 ssleay32.directory는 apache/bin에 존재하지 않고 php 디렉토리에만 존재하며 시스템 환경변수에 php 디렉토리를 추가해야 합니다.난 이게 좋아.

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

RusAlex의 답변은 Apache의 경우 Apache 서비스를 설치 및 활성화하고 재시작해야 한다는 점에서 옳습니다.

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

그러나 내 Ubuntu 서버에서 nginx와 php5-fpm을 사용했을 때 다음과 같은 문제가 발생했습니다.다음과 같이 nginx와 php5-fpm을 재시작해야 했습니다.

sudo service nginx restart
sudo service php5-fpm restart

그러나 동작하지 않는 php5-fpm 프로세스가 있었습니다.이것은 ubuntu https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376의 버그인 것 같습니다.그래서 php5-fpm을 재시작하기 위해 모든 유휴 php5-fpm 프로세스를 중지하고 실제로 curl 모듈을 로드해야 했습니다.

sudo kill <Process Id of php5-fpm Process)

curl_int() 함수는 서버 오류를 일으킵니다.install sudo apt-get install php5-discls restart apache2 server ..그것은 매력적으로 작용할 것이다

Linux 에서는, 다음의 방법으로 인스톨 할 수 있습니다.

sudo apt-get install php5-curl

Windows의 경우('를 php.ini에서 삭제)

;extension=php_curl.dll

Apache 서버를 재시작합니다.

Ubuntu 18.04에서는 이 두 가지 명령어가 이 문제를 해결합니다.

sudo apt-get install php5.6-curl //install curl for php 5.6
sudo service apache2 restart //restart apache

서버에 Curl을 설치하지 않은 것 같습니다.
서버의 PHP 버전을 확인하고 다음 명령을 실행하여 컬을 설치합니다.

sudo apt-get install php7.2-curl

그런 다음 다음 명령을 사용하여 Apache 서비스를 다시 시작합니다.

sudo service apache2 restart

7.2PHP 버전으로 바꿉니다.

저도 이 문제에 직면했어요.운영체제는 Ubuntu 18.04이고 PHP 버전은 PHP 7.2입니다.

해결 방법은 다음과 같습니다.

Ubuntu 서버에 CURL 설치:

sudo apt-get install curl

아래의 PHP CURL 저장소를 소스 목록에 추가하십시오.

sudo add-apt-repository ppa:ondrej/php

패키지 데이터베이스 새로 고침

sudo apt update

PHP-curl 7.2 설치

sudo apt install php7.2-fpm php7.2-gd php7.2-curl php7.2-mysql php7.2-dev php7.2-cli php7.2-common php7.2-mbstring php7.2-intl php7.2-zip php7.2-bcmath

Apache 서버 재시작

sudo systemctl restart apache2

그게 다예요.

이게 도움이 됐으면 좋겠다

또 다른 답은...커맨드 라인(CLI)의 PHP가 작동을 중지했기 때문에 2020년 10월에 이곳에 도착한다면, 어떤 업그레이드는 묻지도 않고 다른/새로운 버전의 PHP로 자동으로 이동할 것입니다.

행::php --version어떤 버전의 CLI가 실행되고 있는지 알면 놀랄 수 있습니다.

다음 뛰어요.ll /usr/bin/php이게 어디서 연결되는지 알면 놀라실 거예요.

심볼릭 링크가 아닌 PHP 바이너리를 직접 호출할 때는 원하는 PHP 버전을 참조하는 것이 가장 좋습니다.

예:

/usr/bin/php7.3원하는 버전을 제공합니다.업그레이드 시 버전이 자동으로 전환될 수 있으므로 /usr/bin/php를 신뢰하거나 php를 입력할 수도 없습니다.

Ubuntu 20.04.1 LTS 및 PHP 버전 7.4.3에서 이 문제를 해결했습니다.

패키지 인덱스 업데이트:

sudo apt-get update

php7.4-curl deb 패키지 설치:

sudo apt-get install php7.4-curl

라스피안에게 효과가 있었어

sudo apt update && sudo apt upgrade
sudo apt install php-curl

마지막으로:

sudo systemctl restart apache2

또는 다음과 같이 입력합니다.

sudo systemctl restart nginx

Ubuntu에 php-curl의 마지막 버전을 설치하려면 다음을 사용합니다.

sudo apt-get install php-curl -y

언급URL : https://stackoverflow.com/questions/4477535/php-fatal-error-call-to-undefined-function-curl-init

반응형