4

テキストファイルを解析した後、phpスクリプトを呼び出してデータベースにレコードを挿入するシェルスクリプトがあります。PHP スクリプトを呼び出すと、mysqli が見つからないというエラーが表示されます。

PHP Fatal error:  Class 'mysqli' not found in /path/to/php/file.php on line 5

これは、Nginx と PHP-FPM と Mysql 5.5.x を使用した Macbook Pro のローカルで失敗し、ソケット パラメータを mysqli 呼び出しに追加した後、ローカルで機能しました。 これはローカルデータベースで機能しました!

$mysqli = new mysqli("localhost", "user", "pass", "mydb", 3306, "/tmp/mysql.sock");

Linuxサーバー(PHP 5.3.xで「yum install php」がインストールされたCentOS6)にデプロイしました。リモート db サーバーへの接続を変更したため、このサーバーで db が実行されていないため、「/tmp/mysql.sock」を削除しました。

php を呼び出してスクリプトを実行するシェル スクリプト:

php -c "/etc/php.ini" -f "/path/to/php/file.php"

mysql をローカルで実行していない場合、mysqli lib を認識して実行するにはどうすればよいですか。CentOS6上です。mysqli.so を php.ini ファイルに追加しようとしたところ、次のエラーが発生しました。

[mike@app2 myapp]# php -version
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' - /usr/lib64/php/modules/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.3 (cli) (built: Feb  2 2012 23:47:49) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

これを解決してくれてありがとう。通常、私は mysql(query) を使用しますが、スクリプト内のいくつかの準備済みステートメントとその他のビットには mysqli() が必要です。

4

2 に答える 2

8

mysqli が PHP と共にインストールされていないことがわかり、次のコマンドを実行しました。

>php -i

これは phpinfo() を返し、mysqli についての言及は見つかりませんでした。次に、「yum」コマンドを実行して php-mysqli をインストールしました。

>yum install php-mysqli

この後、スクリプトは正常に機能しました。これが、同様に遭遇する可能性のある他の人に役立つことを願っています.

于 2012-07-21T00:10:27.907 に答える
1

PHP CLIには、Webサーバーで使用されるものとは異なる独自の環境設定があります。この問題の原因となるCLI環境で利用可能なmysqliがない場合。

于 2012-07-20T19:00:10.810 に答える