我刚刚将服务器的PHP版本升级到5.4.22,现在每个使用PDO的脚本都不起作用。
我的PHP脚本示例不起作用:
<?php
$dsn = 'mysql:dbname=testDB;host=127.0.0.1';
$user = '[hidden]';
$password = '[hidden]';
try {
$pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
?>
当我运行脚本时,我得到:Fatal error: Class 'PDO' not found
,我为每个创建连接的脚本都会收到同样的错误。
我对puTTY进行了检查以检查PDO是否存在,并且发现了这一点:
root@cpanel [~]# php -m | grep -i pdo
PDO
pdo_mysql
pdo_sqlite
我的 php.ini 有
extension=pdo.so
extension=pdo_sqlite.so
; sqlite was removed by EasyApache v3.22.24 on Sat Dec 14 23:24:10 2013 (PHP v5.4.x incompatibility)
; extension=sqlite.so
extension=pdo_mysql.so
PHP文件声明中的 phpinfo();
即时PHP Version 5.3.10
我的终端# php -v
如何说PHP 5.4.22
所以这让我很困惑,为什么我会得到两个版本。
答案 0 :(得分:1)
您的问题表明您正在通过命令行检查PHP版本。但PHP通过Web浏览器将使用加载到Apache的模块,这是一个完全不同的事情。因此,请检查通过Web浏览器加载的PHP脚本中phpinfo();
的输出。是否安装了PDO或通过它安装显示?
您的Apache配置文件在哪里查找目录mods-available
和文件php5.load
。在Ubuntu 12.04下,它将在这条道路上:
/etc/apache2/mods-available/php5.load
内容应该是:
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
该文件中的路径是否与新编译的libphp5.so
的安装位置匹配?
此外,LoadModule php5_module
行可能是主Apache配置的一部分。环顾四周寻找设置的位置。然后只需将新模块的路径设置为我,无论它实际安装在哪里。