PHP:致命错误:未找到类'SoapClient'

时间:2014-10-15 13:33:00

标签: php apache soap

首先,我已经阅读了这个问题(Fatal error: Class 'SoapClient' not found)并完成了所有工作。但仍然遇到问题。

我也在这里发现了类似的问题(https://bugs.php.net/bug.php?id=64445),但它也没有解决。

我试图在Win 7 64上设置PHP + Apache环境。

  1. PHP :php-5.5.17-Win32-VC11-x86。线程安全。

  2. Apache :httpd-2.4.10-win32-VC11

  3. 所以,这是SOAP的C:\PHP\php.ini。一切都设置正确:

    extension=php_soap.dll
    
    ; Directory in which the loadable extensions (modules) reside.
    ; On windows:
    extension_dir = "C:/PHP/ext"
    
    [soap]
    ; Enables or disables WSDL caching feature.
    ; http://php.net/soap.wsdl-cache-enabled
    soap.wsdl_cache_enabled=1
    
    ; Sets the directory name where SOAP extension will put cache files.
    ; http://php.net/soap.wsdl-cache-dir
    soap.wsdl_cache_dir="/tmp"
    
    ; (time to live) Sets the number of second while cached file will be used
    ; instead of original one.
    ; http://php.net/soap.wsdl-cache-ttl
    soap.wsdl_cache_ttl=86400
    
    ; Sets the size of the cache limit. (Max. number of WSDL files to cache)
    soap.wsdl_cache_limit = 5
    

    C:/PHP/ext文件夹中,我有php_soap.dll个文件,C:\PHP\ext\php_soap.dll

    但我的phpinfo();只返回 这个关于SOAP的内容:

    enter image description here

    不要显示以下设置:

    enter image description here

    我得到错误:

    Fatal error: Class 'SoapClient' not found in C:\Apache24\htdocs\myApp\src\Em\Bundle\PlatformBundle\Services\MyAppService.php on line 46
    

    我错过了什么?怎么解决?

5 个答案:

答案 0 :(得分:8)

这很容易。

您使用Symfony2我认为您使用命名空间。此函数位于Root-Namespace中。

使用:

\SoapClient()

否则你在命名空间中,他们找不到类。

例如,您对Exception类有同样的问题。

答案 1 :(得分:4)

我在自定义模块Drupal 8中遇到了同样的问题。

它使用Symfony2,所以只需在控制器中添加它:

use SoapClient;

答案 2 :(得分:3)

如果您使用的是linux,而且您缺少soap扩展程序,就像我一样,并且您已经在php.ini中启用了它,那么请尝试

apt-get install php-soap
service apache2 restart

答案 3 :(得分:0)

尝试使用路径配置扩展程序:

extension=ext/php_soap.dll

phpinfo()中,您可以看到以下重要内容:

Configuration File (php.ini) Path   C:\WINDOWS
Loaded Configuration File   C:\Apache24\bin\php.ini 

但是你可以在httpd.conf中改变ini文件夹:

# configure the path to php.ini
#PHPIniDir "C:/php"

但是看看你使用的扩展目录是什么:

extension_dir   C:\php

在“核心”部分。这也可以配置。

答案 4 :(得分:0)

在PHP / 7.4.11服务器中

在XAMPP控制面板中

  1. 停止Apache服务器
  2. 单击Apache旁边的Config
  3. 从下拉列表中选择PHP(php.ini)
  4. Ctrl + F查找 ; extension = soap 并删除;从线开始。
  5. Ctrl + S保存文件。
  6. 再次启动Apache。

此步骤解决了我的问题。