web-dev-qa-db-ja.com

致命的エラー:9行目の...で未定義関数curl_init()を呼び出す

<?php
$filename = "xx.gif";
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));

// $data is file data
$pvars   = array('image' => base64_encode($data), 'key' => IMGUR_API_KEY);
$timeout = 30;
$curl    = curl_init();

curl_setopt($curl, CURLOPT_URL, 'http://api.imgur.com/2/upload.xml');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);

$xml = curl_exec($curl);

curl_close ($curl);

var_dump($xml);
?>

Imgur APIで遊んでいますが、うまくいかないようです。 PHP.netはcurl_init()はPHP5にあると言っていますが、私のホストはそうではないと言っています。この作業を行うにはどうすればよいですか?

62
Thew

curlはインストールが必要な拡張機能であり、PHPバージョンとは関係ありません。

http://www.php.net/manual/en/curl.setup.php

38
fire

古いバージョンのDebianおよびUbuntuでは、PHP用のCurl拡張機能をインストールし、Webサーバーを再起動することでこれを解決しました。 WebサーバーがApache 2であると仮定します。

Sudo apt-get install php5-curl
Sudo service Apache2 restart

新しいバージョンでは、変更されたパッケージ名:

Sudo apt install php-curl

さらにインストールする必要がある可能性があります。

Sudo apt-get install curl libcurl3 libcurl3-dev;
122
Mark Stosberg

まだコメントするほどの評判はありません。 Ubuntuとシンプルなものを使用する:

Sudo apt-get install php5-curl
Sudo /etc/init.d/Apache2 restart

私には役に立たなかった。

何らかの理由でcurl.soがデフォルトで選択されていない場所にインストールされました。 php.iniでextension_dirを確認し、curl.soextension_dirにコピーしました

cp /usr/lib/php5/20090626/curl.so  /usr/local/lib/php/extensions/no-debug-non-zts-20090626

これが誰かを助け、それに応じてパスの場所を調整することを願っています。

14
Michael Irey

buntuの場合

PHPのCurl拡張機能をインストールし、Apacheサーバーを再起動します。

Sudo apt-get install php5-curl
Sudo service Apache2 restart

Windowsの場合

Lib_curl.dllをPHPに含めないために問題が発生します。動作していない場合は次の拡張機能もロードするため、php.iniにある拡張機能を削除するか、php.iniファイルに既に存在する場合はコメントを削除してからコメントを削除します。

extension=php_bz2.dll
extension=php_curl.dll
extension=php_dba.dll

次に、Apacheサーバーを再起動します。 「Unable to Load php_curl.dll」というエラーが表示された場合は、SSLEAY32.PHP、libEAY32.dll(OpenSSL)ライブラリをSystem32フォルダーにコピーします。

13
Vinay

ubuntuでのPHP 7.0の使用

Sudo apt-get install php7.0-curl

そして最後に、

Sudo service Apache2 restart 

または

Sudo service nginx restart
3
Mazino S Ukah

PHP 7.1.14を実行しているubuntu 16.04でこれを経験しました。解決するには、まずこれをスクリプトに入れて実行します。 curlがインストールされて有効になっている場合はtrueを返し、そうでない場合はfalseを返します。

<?php
    var_dump(extension_loaded('curl'));
?>

Falseを返した場合、実行します

Sudo apt-get install php7.1-curl

そして最後に、

Sudo service Apache2 restart

再起動後、スクリプトはtrueを返し、できればエラーを解決する必要があります。

2
The Sammie

Windows 7 x64に必要なすべての詳細を含むソリューションがあります。

http://www.youtube.com/watch?v=7qNTi1sEfE8

フランス語ですが、すべてを理解できます!フランス語を話せなくても、同じ問題を解決しました。 :-)

多くの回答は、この場所からphp_curl.dllファイルの新しいバージョンを追加する必要があることを言及することを忘れています: http://www.anindya.com/php-5-4-3-and-php-5-3 -13-x64-64-bit-for-windows /

アーカイブphp_curl-5.4.3-VC9-x64.Zipの新しいバージョンのphp_curl.dllをフォルダーC:\ wamp\bin\php\php5.4.3\extおよびC:\ Windows\System32に追加しましたが、すべて正常でした!

2
Nemanja Vujacic

これを行う

Sudo apt-get install php-curl

サーバーを再起動します

Sudo service Apache2 restart
2
jafar690