0

私は PHP を開発しており、さまざまな機能をテストするための単純なファイルがあります。これを容易にするために、コマンドラインからこのファイルを実行したいと思います。これは問題を引き起こしていますが、それが何であるかはわかりません。

コードは PDO を使用します。PDO ラッパーとして機能し、シングルトン デザイン パターンを適用する Database クラスがあります。クラスはとてもシンプルです。関連するコードの一部を次に示します。

// instance of PDO
private static $db = null;

//connection related fields
const dsn = "mysql:dbname=mydb;host=localhost";
const user = "myuser";
const password = "mypass";

//get access to the PDO instance
public static function get_instance()
{
    if(!self::$db)
    {
        self::$db = new PDO(self::dsn,self::user,self::password);
        self::$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        self::$db->exec("set names utf8");
    }

    return self::$db;

}

次のようにテストファイルを作成すると、次のようになります。

$db = Database::get_instance();

次のようにコマンドラインから実行します。

php5 ./testing.php

例外が発生します: 「ドライバーが見つかりませんでした」というメッセージを含む PDOException です。これは、新しい PDO オブジェクトをインスタンス化する上記の行が原因です。

ただし、ブラウザーを介してこのファイルに移動し、Web サーバーによって提供されている場合、正常に動作し、オブジェクトは期待どおりに動作します。

これは、ターミナルから PHP ファイルを実行する際の問題のようです。これはコードの問題ではないと思います。誰かがこれを引き起こしている可能性があることを提案できますか? アドバイスや助けをいただければ幸いです。ありがとう。

4

2 に答える 2

3

PHP のコマンドライン バージョンは、Web バージョンとは異なる構成を持つことができます。適切な PHP 構成ファイルを見つけ、データベース ドライバーをセットアップすれば問題ありません。

于 2012-04-14T19:04:08.220 に答える
2
/usr/local/php/bin/php -> /usr/bin/php

/usr/bin/phpPHP のコマンドライン バージョン、 /usr/local/php/bin/phpWeb バージョン

lnコマンドを試す

于 2012-09-06T08:26:32.040 に答える