接收 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 警告:模块已在第 0 行的未知中加载

核心警告:模块'mongodb'已经加载

PHP警告:无法加载动态库'/usr/lib64/php/modules/solr.so'未定义符号:php_json_decode_ex in Unknown on line 0

Typescript - 警告:要加载 ES 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名

PHP 警告:PHP 启动:杂音:无法初始化模块,使用错误的 API 模块编译

PHP 警告:PHP 启动:pdf:无法初始化模块