接收 PHP 警告:模块 '[module name]' 已加载到第 0 行的未知中
Posted
技术标签:
【中文标题】接收 PHP 警告:模块 \'[module name]\' 已加载到第 0 行的未知中【英文标题】:Receiving PHP Warning: Module '[module name]' already loaded in Unknown on line 0接收 PHP 警告:模块 '[module name]' 已加载到第 0 行的未知中 【发布时间】:2016-06-06 04:29:06 【问题描述】:我正在尝试学习 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
谢谢。
【问题讨论】:
可以发/etc/php/7.0/apache2/conf.d/10-pdo.ini
的内容吗
内容为:; configuration for php common module ; priority=10 extension=pdo.so
他们在同一行吗? ;是评论。如果它们在同一行,则不加载 extension=pdo.so。如果它们不在同一行,这就是加载 pdo.so 的地方。
是的,它们在不同的行,这个评论部分不喜欢换行。这对我遇到的问题意味着什么?
这一行 ;extension=php_bz2.dll
是 Windows 服务器的 PHP.ini。在 Linux 中,我相信必须是 .SO 文件而不是 .DLL。您说“尝试读取 sqlite 数据库后出现 PDO 错误”。我以为你尝试使用 MySQL 而不是 SQLite?如果您尝试使用 SQLite,那么您还必须为 SQLite 安装 PHP 扩展。
【参考方案1】:
可能是因为您尝试在 PHP7 之上安装 php5-mysql
。顾名思义,它是 PHP5 扩展。 PHP7 附带的其他扩展可能已经加载。因为您使用 PHP7,所以请确保您加载了正确的 PHP7 扩展。尝试安装 PHP7.0-mysql 扩展,然后重启网络服务器。
$ sudo apt-get install php7.0-mysql
【讨论】:
是的,这是我事后才意识到的,我承认我是不假思索地做到的。您是否有解决我收到的警告的建议解决方案?这个模块会在 ubuntu 系统中自己安装在哪里,卸载后会留下哪些文件? 我遇到了同样的问题,只安装了 php7.0 模块,所以我认为这不是原因。以上是关于接收 PHP 警告:模块 '[module name]' 已加载到第 0 行的未知中的主要内容,如果未能解决你的问题,请参考以下文章
PHP警告:无法加载动态库'/usr/lib64/php/modules/solr.so'未定义符号:php_json_decode_ex in Unknown on line 0
Typescript - 警告:要加载 ES 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名