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を実行できることですが、これは最良のオプションではなく、信頼性の低いものだと聞いています。
どんな助けも大歓迎です。ありがとう!
同じ問題がありました。しかし、最終的に次のコマンドを実行して解決しました。
Sudo apt-get install php7.0-curl
インストール後にサーバーを再起動します。この回答は、2か月前に質問したため、質問したユーザーには役に立たない場合があります。ただし、これは将来これを読むユーザーにとっては便利かもしれません。
これは、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を使用できました。
私は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
わたしにはできる!
php5
の代わりにコマンドラインインターフェイス( 'cli')を使用している場合、
php -q myfile.php
使ってください:
php5 -q myfile.php
php5-curl
は、curl
ではなく、_php5
のphp
モジュールを有効にしているようで、両方とも異なる構成とモジュールをロードできます。
常に最初に確認する必要があるのは、php.iniファイルです。 Webルートにphp.iniファイルが必要です。 Curlは、ほとんどのWebサーバーにデフォルトでインストールされます。 PHPがすでにインストールされていないWebサーバーは見つかりませんでした。ただし、常に有効になっているわけではありません。
Php.iniファイルを確認し、php_curl.dllを検索します。次のようになります。
;extension=php_curl.dll
「拡張子」の前からセミコロン(;)を削除して、ファイルを保存するだけです。すぐに動作するはずです。 phpinfo.phpによると、既にインストールされているので、おそらく有効にする必要があるだけです。
興味がある場合は、同様の質問をここで見つけることができます。 未定義関数curl_init()への呼び出し
最初にあなたのバージョンを見つけます 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
誰かがここに到達して、実行中の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の前。
それが誰かを助けることを願っています。