我正在尝试学习Laravel和PHP,同时学习如何管理服务器。我试图解决一个不同的问题,即尝试从 sqlite 数据库读取时找不到 PDO 驱动程序。
我的服务器运行的是 PHP 7.0,我实际上使用本指南从 5.5.9 升级了它:
https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04
为了解决PDO驱动程序问题,我运行以下命令:
apt-get install php5-mysql
这并不能解决问题,但现在每次我运行 PHP 命令时,都会遇到以下文本行:
PHP Warning: Module 'PDO' already loaded in Unknown on line 0
PHP Warning: Module 'calendar' already loaded in Unknown on line 0
PHP Warning: Module 'ctype' already loaded in Unknown on line 0
PHP Warning: Module 'exif' already loaded in Unknown on line 0
PHP Warning: Module 'fileinfo' already loaded in Unknown on line 0
PHP Warning: Module 'ftp' already loaded in Unknown on line 0
PHP Warning: Module 'gettext' already loaded in Unknown on line 0
PHP Warning: Module 'iconv' already loaded in Unknown on line 0
PHP Warning: Module 'Phar' already loaded in Unknown on line 0
PHP Warning: Module 'posix' already loaded in Unknown on line 0
PHP Warning: Module 'shmop' already loaded in Unknown on line 0
PHP Warning: Module 'sockets' already loaded in Unknown on line 0
PHP Warning: Module 'sysvmsg' already loaded in Unknown on line 0
PHP Warning: Module 'sysvsem' already loaded in Unknown on line 0
PHP Warning: Module 'sysvshm' already loaded in Unknown on line 0
PHP Warning: Module 'tokenizer' already loaded in Unknown on line 0
PHP Warning: Module 'zlib' already loaded in Unknown on line 0
我在网上找到了很多关于这个问题的文章,他们都说我只需要取消注释我的 php.ini 文件中的行。运行 phpinfo() 显示我加载的配置文件在这里:
/etc/php/7.0/apache2/php.ini
我转到该文件,然后搜索"extension=",但我看到每次提到扩展名都已被注释掉。请参阅示例:
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
我在phpinfo()中看到另外两件事可能与某事有关。"扫描此目录以查找其他.ini文件显示"
/etc/php/7.0/apache2/conf.d
"以及解析的其他.ini文件"显示:
/etc/php/7.0/apache2/conf.d/10-opcache.ini, /etc/php/7.0/apache2/conf.d/10-pdo.ini, /etc/php/7.0/apache2/conf.d/20-calendar.ini, /etc/php/7.0/apache2/conf.d/20-ctype.ini, /etc/php/7.0/apache2/conf.d/20-exif.ini, /etc/php/7.0/apache2/conf.d/20-fileinfo.ini, /etc/php/7.0/apache2/conf.d/20-ftp.ini, /etc/php/7.0/apache2/conf.d/20-gettext.ini, /etc/php/7.0/apache2/conf.d/20-iconv.ini, /etc/php/7.0/apache2/conf.d/20-json.ini, /etc/php/7.0/apache2/conf.d/20-mysqli.ini, /etc/php/7.0/apache2/conf.d/20-pdo_mysql.ini, /etc/php/7.0/apache2/conf.d/20-phar.ini, /etc/php/7.0/apache2/conf.d/20-posix.ini, /etc/php/7.0/apache2/conf.d/20-readline.ini, /etc/php/7.0/apache2/conf.d/20-shmop.ini, /etc/php/7.0/apache2/conf.d/20-sockets.ini, /etc/php/7.0/apache2/conf.d/20-sysvmsg.ini, /etc/php/7.0/apache2/conf.d/20-sysvsem.ini, /etc/php/7.0/apache2/conf.d/20-sysvshm.ini, /etc/php/7.0/apache2/conf.d/20-tokenizer.ini, /etc/php/7.0/apache2/conf.d/20-zlib.ini
我不想再搞砸我的服务器了,所以我想知道是否有人知道如何修复这些错误。此后我卸载了php5-mysql,没有按预期解决问题。作为奖励,如果有人知道如何在尝试读取sqlite数据库后正确修复以下PDO错误,那将是惊人的:
[PDOException]
could not find driver
谢谢。
也许是因为您尝试在 PHP7 之上安装php5-mysql
。顾名思义,它是PHP5扩展。PHP7 附带的另一个扩展可能已经加载。因为您使用 PHP7,所以请确保加载正确的 PHP7 扩展。尝试安装 PHP7.0-mysql 扩展,然后重新启动 Web 服务器。
$ sudo apt-get install php7.0-mysql