Прежде всего, я прочитал этот вопрос (Неустранимая ошибка: класс "SoapClient" не найден) и все, что было сказано в ответ. Но все еще проблема.
Здесь я также нашел аналогичную проблему (https://bugs.php.net/bug.php?id=64445), но она также не решена.
Я пытаюсь настроить среду PHP + Apache на Win 7 64.
PHP: php-5.5.17-Win32-VC11-x86. Безопасность резьбы.
Apache: httpd-2.4.10-win32-VC11
Итак, вот мой C:\PHP\php.ini
для SOAP. Все установлено правильно:
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
Что я пропустил? Как его решить?
Это очень просто.
Вы работаете с Symfony2, я думаю, и вы используете пространства имен. Эта функция находится в корневом пространстве имен.
использование:
\SoapClient()
В противном случае вы находитесь в пространстве имен, и они не могут найти класс.
У вас такая же проблема с классом Exception
, например.
У меня была такая же проблема в настраиваемом модуле Drupal 8.
Он использует Symfony2, поэтому просто добавьте это в контроллер:
use SoapClient;
Если вы работаете в Linux, и вам не хватает расширения soap, как и я, и вы уже включили его в php.ini, попробуйте
apt-get install php-soap
service apache2 restart
Попробуйте настроить расширение с помощью пути:
extension=ext/php_soap.dll
В phpinfo()
вы можете увидеть эти важные строки:
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Apache24\bin\php.ini
Но вы можете изменить папку ini, если хотите в httpd.conf:
# configure the path to php.ini
#PHPIniDir "C:/php"
НО ВИДИТЕ, какой расширитель вы используете:
extension_dir C:\php
В разделе "Core". Это также можно настроить.
SoapClient()
классаSoapClient()
без \. Я поставил\SoapClient()
но проблема остается