我正在开发PHP并有一个简单的文件来测试各种功能。为方便起见,我想从命令行运行此文件。这导致了一个问题,我不确定它是什么。
代码使用PDO。我有一个Database类充当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'with message'找不到驱动程序' 这是由上面一行实例化一个新的PDO对象引起的。
但是,如果我通过浏览器导航到此文件并且由我的Web服务器提供,它运行正常,则该对象按预期工作。
这似乎是从终端运行PHP文件的问题。我不认为这是代码中的问题。有谁能提出可能导致这种情况的原因?任何建议或帮助将非常感激。谢谢。
答案 0 :(得分:3)
PHP的命令行版本可以具有与Web版本不同的配置。找到合适的PHP配置文件,设置数据库驱动程序,你应该没问题。
答案 1 :(得分:2)
/usr/local/php/bin/php -> /usr/bin/php
/usr/bin/php
是PHP的命令行版本,
/usr/local/php/bin/php
是网络版
尝试ln
命令