首先,我已经阅读了这个问题(Fatal error: Class 'SoapClient' not found)并完成了所有工作。但仍然遇到问题。
我也在这里发现了类似的问题(https://bugs.php.net/bug.php?id=64445),但它也没有解决。
我试图在Win 7 64上设置PHP + Apache环境。
PHP :php-5.5.17-Win32-VC11-x86。线程安全。
Apache :httpd-2.4.10-win32-VC11
所以,这是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的内容:
我不要显示以下设置:
我得到错误:
Fatal error: Class 'SoapClient' not found in C:\Apache24\htdocs\myApp\src\Em\Bundle\PlatformBundle\Services\MyAppService.php on line 46
我错过了什么?怎么解决?
答案 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控制面板中
此步骤解决了我的问题。