テキストファイルを解析した後、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() が必要です。