web-dev-qa-db-ja.com

curlをPHP cliにインストールする

Curlを必要とするcronjobを設定しようとしていますが、crontabから直接呼び出しています

* * * * * /usr/bin/php myurl/my_cron.php

問題は、phpcliにcurlモジュールがインストールされていないように見えることです。

ブラウザからURLにアクセスすると正常に動作しますが、実行すると

php -q myfile.php

コマンドラインから、それは返します

PHP Fatal error:  Call to undefined function curl_init() in my_cron.php on line 20

php -mを実行すると、curlモジュールが表示されません。ただし、ブラウザーに移動してphp_info()をダンプすると、モジュールが表示され、正しくインストールされていると表示されます。

もう1つのキッカーは、apt-getを使用してcurlをサーバーにインストールしようとしていることです(Ubuntu 12.04 php 5.4)、それは単にPHP index.phpファイルを参照しようとする場所にダウンロードします。

以下は、PHPを削除したcurlをインストールしようとした試みです。

Sudo apt-get install php-curl
Sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

これらのそれぞれの後で、Apache2サーバーを再起動しましたが、まだサイコロは表示されず、ページを開く代わりにファイルをダウンロードしようとしました。

どうすればphp5-curlをcliにインストールして、サーバーで実行でき、ブラウザーを介さずに済むようにできますか?

もう1つの可能性は、crontabファイルからwgetを使用してcronjobsを実行できることですが、これは最良のオプションではなく、信頼性の低いものだと聞いています。

どんな助けも大歓迎です。ありがとう!

17
user2966822

同じ問題がありました。しかし、最終的に次のコマンドを実行して解決しました。

Sudo apt-get install php7.0-curl

インストール後にサーバーを再起動します。この回答は、2か月前に質問したため、質問したユーザーには役に立たない場合があります。ただし、これは将来これを読むユーザーにとっては便利かもしれません。

44
Sriraman

これは、Apacheを介して実行されるphpファイルでcurlが動作していたとき、ublintu 14.04でこれを修正した方法ですが、cliから呼び出されたときではありません。

サーバーにsshし、/にcdします

find / -name 'curl.so'

上記のfindコマンドを実行して、curlバイナリがぶらぶらしている場所を見つけます。ファイルが見つからない場合は、curlをインストールして、findコマンドを再度実行する必要があります。

apt-get install php5-curl

これで、cliから実行されるphpファイルに使用されるphp.iniを編集する必要があります(Apacheで使用されるものとは異なります)。おそらく/etc/php5/cli/php.iniにあります。

nano /etc/php5/cli/php.ini

実行することもできます

php -i | grep 'php.ini'

ファイルパスを取得するには、念のため。

Ctrl + wを押して、php.iniファイルで[curl]を検索します。

ファイルに拡張子を追加すると、次のようになりますが、curl.soファイルなどへのパスは少し異なる場合があります。

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =
extension=/usr/lib/php5/20131226/curl.so

上記を実行した後、cliから実行されるphpスクリプトでcurlを使用できました。

15
rmmoul

私はubuntu 14.04とphp 5.3を使用しています。 php 5.6.29にアップグレードした後、php curlにも問題があります。 PHP 5.6.29に更新した後のディレクトリ構造:

/ etc/php5-古いバージョン(5.3)

/etc/php/5.6-新しいバージョン

次のコマンド

Sudo apt-get install php5-curl

助けにはなりませんでした(古いPHPバージョン5.3に接続しているようです)。

次の記事を見つけました: php 5.6 for magento

コマンドを使用することをお勧めします

apt-get -y install php5.6-curl

の代わりに

apt-get -y install php5-curl

わたしにはできる!

3
Vaha

php5の代わりにコマンドラインインターフェイス( 'cli')を使用している場合、

php -q myfile.php

使ってください:

php5 -q myfile.php

php5-curlは、curlではなく、_php5phpモジュールを有効にしているようで、両方とも異なる構成とモジュールをロードできます。

3
Rocky Inde

常に最初に確認する必要があるのは、php.iniファイルです。 Webルートにphp.iniファイルが必要です。 Curlは、ほとんどのWebサーバーにデフォルトでインストールされます。 PHPがすでにインストールされていないWebサーバーは見つかりませんでした。ただし、常に有効になっているわけではありません。

Php.iniファイルを確認し、php_curl.dllを検索します。次のようになります。

;extension=php_curl.dll

「拡張子」の前からセミコロン(;)を削除して、ファイルを保存するだけです。すぐに動作するはずです。 phpinfo.phpによると、既にインストールされているので、おそらく有効にする必要があるだけです。

興味がある場合は、同様の質問をここで見つけることができます。 未定義関数curl_init()への呼び出し

1
JaidynReiman

最初にあなたのバージョンを見つけます php cli 沿って:

php -v

たとえば、バージョン7の場合:

Sudo apt-cache search php7

これにより、現在のバージョンの適切なモジュール名が表示されます。

php7.0-curl - CURL module for PHP     <---- the name of curl module. 
php7.0-dev - Files for PHP7.0 module development
php7.0-Gd - Gd module for PHP
php7.0-gmp - GMP module for PHP
php7.0-json - JSON module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mysql - MySQL module for PHP
.
.
so on

追加する curl サポートするには、上記のリストからcurlモジュールの名前をコピーしてから、次を実行します。

Sudo apt-get install php7.0-curl
1
Mustafa.R

誰かがここに到達して、実行中のcurlのWindowsバージョンを見つけた場合に備えて。

_php.ini_を開き、;を削除します656行目の_extension=php_curl.dll_の前。

Apacheが読み込むものは_C:\wamp\bin\Apache\Apache2.2.17\bin\php.ini_であると確信しています。したがって、ブラウザからcurlが動作しているのを見つけることができます。

ただし、コマンドラインからphpを実行すると、不明な関数curl_init();が表示される場合があります

コマンドラインでphp -r "echo php_ini_loaded_file();"を実行して、どのiniファイルがロードされているかを確認します。

通常、_C:\wamp\bin\php\php5.3.5\php.ini_内にあり、Apacheが使用しているものとは異なるファイルです。それを開いてから削除します; 656行目のextension = php_curl.dllの前。

それが誰かを助けることを願っています。