こんにちは、私は PHPポストリクエストをPOSTリクエスト 内で試します。
$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に投稿リクエストを再度送信することです
PhpのCURLサポートをインストールする必要があります。
Ubuntuでは、次の方法でインストールできます
Sudo apt-get install php5-curl
Apt-getを使用している場合、PHP設定を編集する必要はありませんが、Apacheを再起動する必要があります。
Sudo /etc/init.d/Apache2 restart
それでも問題が解決しない場合は、 phpinfo() を使用して、CURLがインストール済みとしてリストされていることを確認してください。 (そうでない場合は、パッケージがインストールされない理由を尋ねる別の質問を開く必要があるかもしれません。)
PHP CURL documentation にインストールマニュアルがあります。
Windowsでは、誰かが興味を持っている場合は、php.iniから次の行のコメントを外します(;を削除して)。
;extension=php_curl.dll
Apacheサーバーを再起動します。
Ubuntuの場合:extension=php_curl.so
必要に応じてphp.iniを有効にします。その後、Sudo service Apache2 restart
これは一般的に自動的に処理されますが、共有開発環境など、状況によってはcanが必要になります手動で再度有効にします。
Thumb印は、次の3つの条件すべてに一致します。
私はそれをubuntu 16.04で手順に従って動作させました。私のPHPバージョンは7.0でした
Sudo apt-get install php7.0-curl
SudoサービスのApache2の再起動
ステップ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"
私の場合、Xubuntuでは、libcurl3 libcurl3-devライブラリをインストールする必要がありました。このコマンドですべてが機能しました:
Sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
PHPの複数のバージョンがシステムにインストールされており、php-curl
パッケージ、まだApacheは同じエラーを与えています。
このバグを修正するために、次のことを行いました。
php.ini
ファイル、この行のコメントを外します:extension=php_curl.dll
php.ini
ファイル、この行のコメントを外します:extension_dir = "ext"
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"
この回答はhttpsリクエスト用です:
Curlにはルート証明書が組み込まれていません(最新のブラウザーのように)。 cacert.pemファイルを明示的に指す必要があります。
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem');
これがないと、curlはSSL経由で返送された証明書を検証できません。 curlでSSLを使用するたびに、この同じルート証明書ファイルを使用できます。
Cacert.pemファイルは次の場所から入手できます。 http://curl.haxx.se/docs/caextract.html
Ubuntu 18.04では、これら2つのコマンドでこの問題を解決できます。
Sudo apt-get install php5.6-curl //install curl for php 5.6
Sudo service Apache2 restart //restart Apache
RusAlexの答えは、Apacheの場合、curlをインストールして有効にし、Apacheサービスを再起動する必要があるという点で正しいです。
Sudo apt-get install php5-curl
Sudo service Apache2 restart
Nginxとphp5-fpmを使用したUbuntuサーバーではしかし、次の問題に遭遇しました。私はnginxとphp5-fpmを次のように再起動する必要がありました:
Sudo service nginx restart
Sudo service php5-fpm restart
しかし、動作していないphp5-fpmプロセスがぶらぶらしていました。これは明らかにubuntuのバグです https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 curlモジュールが実際にロードされるように、すべてのアイドル状態のphp5-fpmプロセスを終了してphp5-fpmを再起動できるようにしなければなりませんでした
Sudo kill <Process Id of php5-fpm Process)
関数curl_int();サーバーエラーを引き起こし、Sudo apt-getをインストールし、php5-curlをインストールし、Apache2サーバーを再起動します..チャームのように動作します
Linuxの場合は、次の方法でインストールできます
Sudo apt-get install php5-curl
Windowsの場合(;を削除)php.iniから
;extension=php_curl.dll
Apacheサーバーを再起動します。
(PHPおよびWindows上のApache ...経由でCurlを動作させようとしています...)
「未定義関数 'curl_init()'の呼び出し」というエラーが引き続き表示されます
Php.iniファイルで次の行を使用してcurlを有効にしていたことを確認しました:extension = php_curl.dll
次のように、extension_dir変数が適切に設定されていることを確認しました:extension_dir = "ext"
私は他のみんながフォーラムで言ったことをすべてやっていましたが、phpinfo()への呼び出しにカールが表示されず、上から同じエラーが発生し続けました。
最後に、ApacheはデフォルトでC:\ Windowsフォルダーでphp.iniを探すことを発見しました。 PHPインストールフォルダーでphp.iniを変更していました。php.iniをC:\ Windowsにコピーすると、すべてが機能しました。
それを理解するために永遠に私を連れて行ったので、他の人に役立つ場合に備えて投稿すると思いました。
PHP 7およびWindows x64
libeay32.dll、libssh2.dll、およびssleay32.dllはApache/binにあるべきではなく、phpディレクトリにのみ存在し、システム環境変数にphpディレクトリを追加する必要があります。これは私のために働きます。
Php.iniでは、php_curl.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