PHP警告:在未知的第0行已经加载了模块'soap'。

5

你好,我有一个关于错误的问题: PHP警告:模块“soap”在未知行上已经加载

我在媒体神庙上运行vps。我从他们的知识库中得到了一些指示,并按照描述完全遵循了它们。然而,为了查看SOAP是否正确安装,我进入命令行并运行“pear list”,这就是我得到的结果。

PHP Warning:  Module 'soap' already loaded in Unknown on line 0
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.11  stable
Console_Getopt   1.3.1   stable
PEAR             1.9.4   stable
Structures_Graph 1.0.4   stable
XML_Util         1.2.1   stable
[root@w8ld-gg7p ~]# rep extension /usr/local/lib/php.ini
-bash: rep: command not found
[root@w8ld-gg7p ~]# 

有人能告诉我哪里做错了吗?首先,SOAP在已安装的包列表中没有加载。其次,我遇到了无法加载SOAP的未知错误。

我是个新手,非常感谢任何帮助!谢谢!

4个回答

7

在其中一个文件中注释掉 extension=soap:

例如,您的 Xampp 中的 php.ini 文件。

;extension=soap

我注释掉了那一行,谢谢。但是如果我们有更多的项目,如果我们想同时开发多个项目,我们该如何管理呢?我们该如何处理这些冲突? - saber tabatabaee yazdi

5

看起来你正在多次加载"soap"模块。而不是使用rep extension /usr/local/lib/php.ini,你应该使用grep extension /usr/local/lib/php.ini来搜索已加载的模块。

如果你的ini文件在不同的位置,你需要找到它在哪里。

  1. If you got PHP Warning from webpage, you can create a file with this as the content:

    <?php
    phpinfo();
    ?> in your browser, search for "Loaded Configuration File" and "Scan this dir for additional .ini files"
    
  2. If you got PHP Warning when running PHP on the shell, run this on shell:

    php -r "phpinfo();" | awk '/^Loaded|^Scan/ {print $NF}'
    
根据你的安装情况,除了php.ini文件外,你可能还有php.d下的ini文件。
对于我的Redhat服务器:
注意:打包的扩展模块现在通过位于目录/etc/php.d中的.ini文件加载;这些文件会默认加载。

嗨!感谢您的回复。所以我做的是进入终端中的命令行,然后输入:grep extension /usr/local/lib/php.ini,这就是我得到的结果:grep: /usr/local/lib/php.ini: 没有那个文件或目录。 - FabricioG
在你的问题中,你正在搜索 /usr/local/lib/php.ini,认为那是你的 php.ini 位置。我已经更新了我的回复,请尝试它以获取 php.ini 和任何其他额外的 ini 加载。谢谢。 - ray

2

前往:/etc/php/7.0/cli/conf.d/

Then:

ls | grep soap

将列出两个文件:

  • 20-soap.ini
  • 40-soap.ini

在其中一个文件中注释掉extension=soap.so:

;extension=soap.so

完成。

如果您正在使用Docker,请在/workspace/Dockerfile文件中注释以下行:

echo "extension=soap.so" >> /etc/php/7.0/cli/conf.d/40-soap.ini

0

我曾经遇到过 mbstring 模块的类似问题。由于我们有两个 php.ini 文件,一个在 apache2 中,另一个在 cli 中,你应该只在其中一个 php.ini 文件中取消注释(并因此加载)以下行: ;extension=php_soap.dll(so) 这样就可以消除警告了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接