2013-12-15 2 views
1

Недавно я обновил версию PHP для моего сервера до 5.4.22, и теперь каждый скрипт, использующий PDO, не работает.PDO не будет работать с момента обновления PHP до 5.4.22

Пример моего 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, я получаю эту же ошибку для каждого сценария, который создает соединение.

Я провел проверку на замазку, чтобы проверить PDO даже там и нашел это:

[email protected] [~]# 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 

phpinfo(); в исках файле PHP IM на PHP Version 5.3.10

Как всегда в моем терминале # php -v говорит PHP 5.4.22

Так что это действительно смутило меня, почему я получаю две версии.

+0

Возможный дубликат [PHP Неустранимая ошибка: класс PDO не найден] (http://stackoverflow.com/questions/11813381/php-fatal-error-class-pdo-not-found) – JakeGould

+0

@JakeGould уже читал этот вопрос, похоже, не помог моей ситуации =/ – Sir

+0

Вы видите расширение линии = pdo.so включено в php.ini? – Satya

ответ

1

Ваш вопрос показывает, что вы проверяете версию PHP через командную строку. Но PHP через веб-браузер будет использовать модуль, загруженный в Apache, что совсем другое. Поэтому проверьте вывод phpinfo(); в PHP-скрипте, загруженном через веб-браузер. Установлен ли 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. Посмотрите вокруг, чтобы найти, где это установлено. А потом просто установите путь для нового модуля ко мне, где бы он ни был установлен.

Смежные вопросы