web-dev-qa-db-fra.com

PHP: Erreur fatale: La classe 'SoapClient' est introuvable

Tout d’abord, j’ai lu cette question ( Erreur fatale: La classe 'SoapClient' n’a pas été trouvée ) et tout est fait, répondez la réponse. Mais encore l'expérience d'un problème.

J'ai également trouvé un problème similaire ici ( https://bugs.php.net/bug.php?id=64445 ), mais il n'est pas résolu là aussi.

J'essaie de configurer un environnement PHP + Apache sur Windows 7 64.

  1. PHP: php-5.5.17-Win32-VC11-x86. Fil en sécurité.

  2. Apache: httpd-2.4.10-win32-VC11

Donc, voici mon C:\PHP\php.ini pour SOAP. Tout est réglé correctement:

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

Dans le dossier C:/PHP/ext, j'ai le fichier php_soap.dll, C:\PHP\ext\php_soap.dll.

Mais ma phpinfo(); renvoie SEULEMENT ceci à propos de SOAP:

enter image description here

Je NE PAS FAIRE ces paramètres sont indiqués:

enter image description here

Et je reçois une erreur:

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

Qu'est-ce que j'ai raté? Comment le résoudre?

9
Green

C'est très facile.

Vous travaillez avec Symfony2 je pense et vous utilisez des espaces de noms. Cette fonction est dans l'espace de noms racine.

utilisation:

\SoapClient()

Sinon, vous êtes dans l'espace de noms et ils ne peuvent pas trouver la classe. 

Vous avez le même problème avec la classe Exception par exemple. 

8
René Höhle

J'ai eu le même problème dans un module personnalisé Drupal 8.

Il utilise Symfony2 alors ajoutez simplement ceci dans le contrôleur:

use SoapClient;
4
Sébastien Gicquel

Si vous êtes sur Linux et qu'il vous manque l'extension soap, comme je l'étais et que vous l'avez déjà activé dans php.ini, essayez 

apt-get install php-soap
service Apache2 restart
1
hounded

Essayez de configurer l’extension en utilisant le chemin:

extension=ext/php_soap.dll

Dans phpinfo(), vous pouvez voir ces lignes importantes:

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

Mais vous pouvez changer le dossier ini si vous le souhaitez dans httpd.conf:

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

MAIS VOIR quel répertoire d'extension utilisez-vous:

extension_dir   C:\php

Dans la section "Core". Cela peut être configuré aussi.

0
TO_REMOVE