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.
PHP: php-5.5.17-Win32-VC11-x86. Fil en sécurité.
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:
Je NE PAS FAIRE ces paramètres sont indiqués:
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?
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.
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;
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
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.