2013-04-27 23 views
1

我陷入了一個非常奇怪的情況。致命錯誤:未找到類'PDO'(但它已安裝並在終端上運行)

我主持一個共享的主機,從出藍色的,停止工作報告致命錯誤網站:類「PDO」未找到

所以我創建了一個驗證文件名爲test.php的並放置它位於public_html文件夾中。

test.php的:

<?php 
if (class_exists('PDO')) { 
    print "PDO is installed"; 
} 
else { 
    print "PDO NOT installed"; 
} 

phpinfo(); 
?> 

所以上面的腳本檢查,如果PDO類存在,右後,打印什麼是安裝並啓用PHP的信息。

首先,我做了SSH終端的一些測試:

  • 運行我檢查安裝模塊的test.php前:$ PHP -m兩者PDO和PDO_MYSQL都在那裏。
  • 然後我跑$ cd public_html $ php -f test.php。它返回的是安裝了PDO類,並且從phpinfo()調用中列出了PDO和PDO_mysql。

然後我運行了web瀏覽器的test.php。它返回了未安裝的PDO,並且在phpinfo()打印調用中列出了PDO和PDO_mysql。

什麼可能導致這樣的行爲?

UPDATE:

I have already tried to add the extension lines below into the php.ini but the issue persisted. I also made sure I had added those line into the right php.ini file by calling get_cfg_var('cfg_file_path')

extension=pdo.so

extension=pdo_mysql.so

+0

作爲附註使用** Mysqli **。 – 2013-04-27 04:13:44

+0

該PDO被安裝在命令行解釋器中,而不是在Web服務器模塊中? – 2013-04-27 08:05:24

回答

1

好的,這裏是我如何解決這個問題,以防其他人遇到同樣的問題。

我創建了php.ini文件的副本,刪除了原文,通過網頁瀏覽器刷新了test.php文件,將php.ini文件複製回原來的位置。

而且固定它。

+1

也許,您可能剛剛重新啓動了Apache或FastCGI進程。 – 2013-04-27 08:06:35

+0

我還沒有嘗試過,但發現共享主機不太可能允許我重新啓動Apache。 – 2014-05-21 21:23:35

4

PHP有兩個獨立的.ini文件。一個用於命令行,一個用於非命令行。您可能只在命令行.ini文件中加載了PDO擴展名。找到.ini文件並確保您已加載PDO擴展。你正在尋找像下面這樣的線。

extension=pdo.so 
extension=pdo_mysql.so 

如果您向我們提供您的操作系統,我們可以指導您到哪裏尋找。

+1

Linux CentOS 5 - 64位 我忘了提及我已經試圖將這兩行添加到php.ini中,但沒有運氣。 我從phpinfo()調用中獲得了php.ini位置。 – 2013-04-27 04:27:18

1

在Ubuntu的13.04,我不知道這是否是同樣的與他人操作系統,但

/var/lib/php5/modules/apache2/enabled_by_admin

移動PDO文件

/var/lib/php5/modules/apache2/enabled_by_maint

使PHP在這幸福聖誕節並在phpinfo()上正確聲明它。

相關問題