PHP: фатальная ошибка: класс 'SoapClient' не найден

8

Прежде всего, я прочитал этот вопрос (Неустранимая ошибка: класс "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:

Изображение 31983

У меня нет этих настроек:

Изображение 31984

И я получаю сообщение об ошибке:

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

Что я пропустил? Как его решить?

Теги:
soap

4 ответа

6

Это очень просто.

Вы работаете с Symfony2, я думаю, и вы используете пространства имен. Эта функция находится в корневом пространстве имен.

использование:

\SoapClient()

В противном случае вы находитесь в пространстве имен, и они не могут найти класс.

У вас такая же проблема с классом Exception, например.

  • 0
    Это верно, у меня был SoapClient() класса SoapClient() без \. Я поставил \SoapClient() но проблема остается
  • 0
    Это особенно глупая вещь для исследования из-за путаницы между пространством имен Soap WSDL / XML и пространством имен PHP. Спасибо за правильную интерпретацию
Показать ещё 1 комментарий
2

У меня была такая же проблема в настраиваемом модуле Drupal 8.

Он использует Symfony2, поэтому просто добавьте это в контроллер:

use SoapClient;
1

Если вы работаете в Linux, и вам не хватает расширения soap, как и я, и вы уже включили его в php.ini, попробуйте

apt-get install php-soap
service apache2 restart
0

Попробуйте настроить расширение с помощью пути:

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". Это также можно настроить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню