[英]PHP Fatal error: Class 'PDO' not found
PHP Fatal error: Class 'PDO' not found in /home/bd/public_html/app/webroot/Cake/Model/Datasource/Database/Mysql.php on line 177
PHP 信息:
PDO
PDO support => enabled
PDO drivers => sqlite, sqlite2, mysql
pdo_mysql
PDO Driver for MySQL => enabled
Client API version => 5.5.24
Directive => Local Value => Master Value
pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock
pdo_sqlite
PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.7.7.1
PHP INI:
extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
extension=pdo_mysql.so
代碼:
/**
* Check whether the MySQL extension is installed/loaded
*
* @return boolean
*/
public function enabled() {
return in_array('mysql', PDO::getAvailableDrivers());
}
關於我為什么會收到此錯誤的想法?
PHP 5.3.15 CloudLinux/CentOS 6 CPanel
嘗試
yum install php-pdo
yum install php-pdo_mysql
service httpd restart
嘗試添加use PDO;
在您的命名空間之后或在您的類之前或在您的PHP
文件的頂部。
確保它們在 php.ini 文件中被調用
如果 PDO 顯示在當前安裝的 php 模塊列表中,您將需要檢查相關文件夾中的 php.ini 文件以確保它們被調用。 在 php.ini 文件的某處,您應該看到以下內容:
extension=pdo.so
extension=pdo_sqlite.so
extension=pdo_mysql.so
extension=sqlite.so
如果它們不存在,只需將上面的行添加到 php.ini 文件的底部並保存。
Mysql.php
文件的完整來源是什么。 根據 php info 列表的輸出,聽起來您可能正在嘗試從命名空間中引用全局類。
如果文件Mysql.php
中有一條語句“namespace”,請使用\PDO
代替PDO
- 這將告訴 PHP 查找全局類,而不是查找本地名稱空間。
有點晚了,但我發現了同樣的問題,我在 PDO 前面用“\”修復了它
public function enabled() {
return in_array('mysql', \PDO::getAvailableDrivers());
}
您可以通過執行以下命令來查找加載的配置文件,
php -i | grep 'php.ini'
然后添加以下行以更正 php.ini 文件
extension=pdo.so
extension=pdo_sqlite.so
extension=pdo_mysql.so
extension=sqlite.so
然后重啟網絡服務器,
service httpd restart
此錯誤是由PDO
對 PHP 不可用引起的。
如果您在命令行上收到錯誤,或者不是通過您的網站用於 PHP 的相同界面,您可能會調用不同版本的 PHP,或者在檢查phpinfo()
時使用不同的php.ini
配置文件。
確保已加載 PDO,並且還加載了數據庫的 PDO 驅動程序。
我使用庫PHP_PDO解決了它,因為我的托管服務提供商不接受我將 PDO 驅動程序安裝到 apache 服務器的要求。
如果您升級了 PHP 版本,請確保 .htaccess 中的舊 PHP 版本配置已被刪除。 有關更多信息,請查看此https://www.hostgator.com/help/article/php-configuration-plugin
對於 Fedora 33,您可以按如下方式安裝:
安裝
dnf install php-pdo
dnf install php-pdo_mysql
重啟 PHP
systemctl restart php-fpm.service
如果您使用 php-fpm 模塊運行 php,請不要忘記運行命令 systemctl restart php-fpm!這將重新加載 php-fpm 模塊。
我必須在 AWS EC2 Linux 實例(PHP 版本 7.3)上運行以下命令:
sudo yum install php73-php-pdo php73-php-mysqlnd
如果有人在 cPanel 中遇到此錯誤,請檢查 cPanel 中的 PHP 版本類型。 將其更改為alt-php
為ea-php
。 這個設置對我有用。
折騰了好久,終於解決了。 檢查您在 Cpanel 中的文件夾以查看是否有 php.ini 文件。 如果是,請刪除它,因為 Cpanel 將使用它自己的 php.ini
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.