PHP PDO 异常 - 仅当从终端运行时


PHP PDO Exception - Only when run from terminal

我正在开发PHP,有一个简单的文件来测试各种功能。为了方便起见,我想从命令行运行此文件。这导致了一个问题,我不确定它是什么。

该代码使用 PDO。我有一个数据库类,它充当 PDO 包装器并强制执行单例设计模式。这门课非常简单。以下是一些相关代码:

// 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 文件的问题。我不认为这是代码中的问题。谁能提出可能导致这种情况的原因?任何建议或帮助将不胜感激。谢谢。

PHP 的命令行版本可以具有与 Web 版本不同的配置。找到正确的PHP配置文件,设置数据库驱动程序,你应该没问题。

/usr/local/php/bin/php -> /usr/bin/php

/usr/bin/php是PHP的命令行版本, /usr/local/php/bin/php是网页版

尝试ln命令