2016-01-17 3 views
23

私はちょうど私のUbuntuにphp7をインストールしました。 最初は問題はなく、私のウェブサイトは機能していました。 しかし突然、それは未定義の関数curl_init()エラーに呼び出しを戻し始めました。 私のページにはカールコードが含まれています。未定義の関数curl_init()を呼び出しても、php7で有効になっています

phpinfo()では、Curlが有効になっているようです。 同様の質問がありましたが、どれもphp7で処理されていませんでした。 私はそれが他とは違うべきだと思った。

編集:私は、端末内

php -i | grep curl  

をしようとすると は、それはおそらく、CLI SAPIで生成されていない

/etc/php/7.0/cli/conf.d/20-curl.ini, 
curl 

答えて

64

XX(16.04)にアップグレードした後も同じような問題がありました。 はとカール再インストールした後:

sudo apt-get install php-curl 

、サーバーの再起動

sudo service apache2 restart 

すべてが正常に戻って行きました:)

+0

修正します。それはCLIスクリプトで働いたような厄介なもの! – Sydwell

+0

Ubuntuサーバー14.04から16.04への最後のアップグレードは、必要なだけ滑らかに行われませんでした。 MySQLは設定ファイルの中で廃止予定の変数のためにリムボーに残っていましたが、今はカールが魔法のように削除されていて、ジョブが2,3日間知らずに失敗していることが分かりました。 –

+3

私の場合、ちょうど参考になりました。デフォルトの7ではなくPHP 5.6を実行していますので、 'apt-get install php-curl'は私に7バージョンを与えました。' 'apt-get php5.6-curl'をインストールする必要がありました – Neek

1

あなたのページを返します。 Webサーバからphpinfo()が返すものをチェックします(おそらく間違ったiniファイルを読み込もうとしています)。

+0

ロードされた設定ファイルは/etc/php/7.0/apache2/php.ini ロードされた設定ディレクトリは/etc/php/7.0/apache2/conf.dです。これらのファイルはすべてOKです。 conf.dフォルダには20-curl.iniファイルがあります。 だから私は何を間違えているのですか? – Sab

+0

あなたはweb sapi経由で/etc/php/7.0/apache2/conf.d/20-curl.iniをロードしていませんか?これらのファイルとApache error_logを確認することをお勧めします。 – symcbean

+0

私の場合、cliはPHP 7.1でApacheは7.0を使用していました...私はbashプロファイルでエイリアスを作成して解決しました... –

3

あなたのファイルパスは、呼び出されたパスまたはファイル名が、例えばであなたの実際のパスと一致しない場合

/var/log/apache2/error.log 

にApacheのエラーログを確認し、おそらく間違っています私の場合は

/usr/lib/php/20151012/php_curl.so 

それは同じパスをされているが、 "PHP_は"

/usr/lib/php/20151012/curl.so 

がありませんでしたので、私は

から

/etc/php/7.0/cli/conf.d/20-curl.ini 

に応じてパス/ファイル名を変更

extension=php_curl.so 

から

extension=curl.so 
+0

PHPの設定を取得する最良の方法は、Webスクリプト をphpinfo()で実行することです。 この状況ではカールについてのすべての情報を得ましたが、他のバージョンのPHPではカールが設定されていました。 hth – TexWiller

4

をここで何が起こっていますか?

システムに複数のバージョンのPhPがインストールされている可能性があり、使用する予定のバージョンがApacheで使用されていない可能性があります。

どのバージョンのPhP Apacheを使用しているかをどのように知っていますか?

これを知るには、Apacheの設定ファイルのROOTディレクトリを知ることが重要です。コマンドラインで、次のように入力することができます

apache2ctl -V //sample output below 

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message 
Server version: Apache/2.4.7 (Ubuntu) 
Server built: Jul 15 2016 15:34:04 
Server's Module Magic Number: 20120211:27 
Server loaded: APR 1.5.1-dev, APR-UTIL 1.5.3 
Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3 
Architecture: 64-bit 
Server MPM:  prefork 
    threaded:  no 
    forked:  yes (variable process count) 
Server compiled with.... 
-D APR_HAS_SENDFILE 
-D APR_HAS_MMAP 
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) 
-D APR_USE_SYSVSEM_SERIALIZE 
-D APR_USE_PTHREAD_SERIALIZE 
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT 
-D APR_HAS_OTHER_CHILD 
-D AP_HAVE_RELIABLE_PIPED_LOGS 
-D DYNAMIC_MODULE_LIMIT=256 
-D HTTPD_ROOT="/etc/apache2" 
-D SUEXEC_BIN="/usr/lib/apache2/suexec" 
-D DEFAULT_PIDLOG="/var/run/apache2.pid" 
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status" 
-D DEFAULT_ERRORLOG="logs/error_log" 
-D AP_TYPES_CONFIG_FILE="mime.types" 
-D SERVER_CONFIG_FILE="apache2.conf" 

を私の場合、私のApacheのROOTの設定ディレクトリは、私は、Apacheが使用しているのconfigsの場所を知っていることを今

HTTPD_ROOT="/etc/apache2" 

に示されています"/etc/apache2"ディレクトリにある"mods-enabled"ディレクトリを調べることで、使用しているPhPのバージョンを正確に判断できるようになりました。私は、ApacheがPHPの'php5'バージョンを使用していたことを確実に知ることができた、この時点で

access_compat.load authz_user.load filter.load  php5.load 
... 
authz_host.load  env.load   php5.conf 

"mods-enabled"の内側に、それはFFの出力を示した0​​を行う私の場合は

、おそらく私のシステムにインストールされています。

$ php5 -r "curl_init();" 
PHP Fatal error: Call to undefined function curl_init() in Command line code on line 1 

出来上がり:

そしてIは、以下のコマンドを実行して、ペソ(すなわち、'php5')のこのバージョンを使用して、上記コードのエラーを再現してみました!

Apacheが使用していると予想していたPHPのバージョンが"php5.6"で、上記の同じコマンドをこのバージョンで実行してもエラーは発生しませんでした。

Apacheに使用するPhPのバージョンを教えてください。私の場合は

、私はApache2ののa2enmod/a2dismod CLIコマンドを使用していました。

はまず、私は私のサーバー(すなわち、"php5")現在アクティブなPHPモジュールを無効にします。

a2dismod php5 

その後、私は私が私のApacheが使用したいのPHPバージョンのPHPモジュールを有効に:

a2enmod php5.6 

私はOをリフレッシュした後、それから私は、Apache

service apache2 restart 

を再起動します私のウェブサイトでffendingページ、エラーは今なくなっています。

関連する問題