私はphp5-fpmとnginxを使って、リモートサーバー上のデータベースでwordpressのインストールを完了しようとしています。しかし、wordpressは私がリモートデータベースに接続することを可能にするためにmysqlの存在を認識しません。
Mysqlエクステンションがロードされているかどうかをチェックするコード(php)は、エクステンションがロードされていないと言います。
<?php
var_dump(extension_loaded('mysql'));
mysql_connect();
の結果:
bool(false)
PHP message: PHP Fatal error: Call to undefined function mysql_connect() in /path/www/check.php on line 3
それでも、どこにでも必要な必要な部分(php5-fpm、php5-mysql、mysql-client、wordpress)があることを示しているようです。ローカルサーバは、リモートサーバ上にあるため、mysql-serverを実行している必要はありません。
それでは、extension_loaded( 'mysql')が正しい状態になるようにするために、他のすべてのものと一緒に何を探すべきですか?
インストールされているさまざまな依存関係の出力は以下のとおりです。
apt-cache policy mysql-client
mysql-client:
Installed: 5.5.43-0ubuntu0.14.04.1
Candidate: 5.5.43-0ubuntu0.14.04.1
Version table:
*** 5.5.43-0ubuntu0.14.04.1 0
500 http://mirror.rackspace.com/ubuntu/ trusty-updates/main AMD64 Packages
500 http://mirror.rackspace.com/ubuntu/ trusty-security/main AMD64 Packages
100 /var/lib/dpkg/status
5.5.35+dfsg-1ubuntu1 0
500 http://mirror.rackspace.com/ubuntu/ trusty/main AMD64 Packages
apt-cache policy mysql-server
mysql-server:
Installed: (none)
Candidate: 5.5.43-0ubuntu0.14.04.1
Version table:
5.5.43-0ubuntu0.14.04.1 0
500 http://mirror.rackspace.com/ubuntu/ trusty-updates/main AMD64 Packages
500 http://mirror.rackspace.com/ubuntu/ trusty-security/main AMD64 Packages
5.5.35+dfsg-1ubuntu1 0
500 http://mirror.rackspace.com/ubuntu/ trusty/main AMD64 Packages
php5-mysqlもインストールされています。
私のワードプレス版:
wp core version --extra
WordPress version: 4.1.1
Database revision: 30133
TinyMCE version: 4.107 (4107-20150118)
PHP 5のバージョン
php --version
PHP 5.5.9-1ubuntu4.9 (cli) (built: Apr 17 2015 11:44:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
Php5-fpmの設定
php5-fpm -i | grep mysql
/etc/php5/fpm/conf.d/20-mysql.ini,
/etc/php5/fpm/conf.d/20-mysqli.ini,
/etc/php5/fpm/conf.d/20-pdo_mysql.ini,
mysql
MYSQL_SOCKET => /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE => -I/usr/include/mysql
MYSQL_LIBS => -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r
mysql.allow_local_infile => On => On
mysql.allow_persistent => On => On
mysql.connect_timeout => 60 => 60
mysql.default_Host => no value => no value
mysql.default_password => no value => no value
mysql.default_port => no value => no value
mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
mysql.default_user => no value => no value
mysql.max_links => Unlimited => Unlimited
mysql.max_persistent => Unlimited => Unlimited
mysql.trace_mode => Off => Off
mysqli
MYSQLI_SOCKET => /var/run/mysqld/mysqld.sock
mysqli.allow_local_infile => On => On
mysqli.allow_persistent => On => On
mysqli.default_Host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
PDO drivers => mysql, pgsql
pdo_mysql
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
ああ、私の問題はphp5-fpmの問題から生じていました。本質的には、 "古い"ものとして実行されているphp5-fpmサービスがあったので、私がウェブからmysqlにアクセスしようとしたとき、それは検出されませんでした。しかし、私がcli経由でアクセスしようとしたとき、それは検出されました。それは私のためにphp5-fpmにそれを絞り込んだ、そしてそれから私はしなければならなかった:
Sudo killall php5-fpm
Sudo service php5-fpm start
さて、ウェブ側はmysqlを問題なく認識し始めました。
サービスが再起動を認識していなかったことがphp-fpmプロセスの原因となったことがまだよくわかりませんが、注意が必要です。