我刚刚安装了Debian Lenny与Apache, MySQL和PHP,我收到一个PDOException无法找到驱动程序。

这是它所引用的特定代码行:

$dbh = new PDO('mysql:host=')。DB_HOST。”;dbname = '。Db_name, db_user, db_pass)

DB_HOST、DB_NAME、DB_USER和DB_PASS是我已经定义的常量。它在生产服务器(以及我之前的Ubuntu server设置)上运行良好。

这与我的PHP安装有关吗?

在网上搜索也没有帮助,我得到的都是专家交流和例子,但没有解决方案。


当前回答

对于有PHP 7.0的新版本的Ubuntu,你可以得到PHP -mysql包:

sudo apt-get install php-mysql

然后重新启动服务器:

sudo service apache2 restart

其他回答

$DB_TYPE = 'mysql'; //Type of database<br>
$DB_HOST = 'localhost'; //Host name<br>
$DB_USER = 'root'; //Host Username<br>
$DB_PASS = ''; //Host Password<br>
$DB_NAME = 'database_name'; //Database name<br><br>

$dbh = new PDO("$DB_TYPE:host=$DB_HOST; dbname=$DB_NAME;", $DB_USER, $DB_PASS); // PDO Connection

这对我很管用。

更新:新版本应该使用php-sqlite3包而不是php5-sqlite。所以,如果你使用的是最新的ubuntu版本,请使用这个:

sudo apt-get install sqlite php-sqlite3

问题的原始答案在这里:

sudo apt-get install sqlite php5-sqlite
sudo /etc/init.d/apache2 restart

如果你的phpinfo()没有显示pdo_sqlite行(在我的情况下,在我的Ubuntu服务器上),你只需要运行上面的行,然后你就可以开始了。

有同样的问题,只是认为,网站是在MAMP的php下运行,但当你调用命令时,它运行mac的(如果没有bash路径修改)。当MAC没有这些扩展时,你会有问题。

运行PHP -i查找已加载的扩展,并安装那些您错过的扩展。 或者运行'/Applications/MAMP/bin/php/php5.3.6/bin/php artisan {your command}'来使用MAMP's

PHP Fatal error:  Uncaught PDOException: could not find driver

我挣扎着,挣扎着“apt安装php-mysql php7toInfinity和不要忘记sqlite- whatever -ever's”,只是无法摆脱这个错误消息,直到我回到基础,重置文件权限在网站上的问题。

这3个命令重置文件和文件夹的权限在网站上,让它再次工作。

cd /var/www/web-site-name.com/web/

# find (sub) directories and change permissions
find . -type d -exec chmod 755 {} \;

# find files and change permissions
find . -type f -exec chmod 664 '{}' \;

问题是一个丢失的php到mysql库。在CentOs中,我通过运行来修复它 # yum install php-mysql,然后用# /bin/systemctl restart httpd重启apache。注意,命名与基于debian/ubuntu的发行版,php->php5和httpd->apache2略有不同。