2014-10-15 33 views
8

Trước hết, tôi đã đọc câu hỏi này (Fatal error: Class 'SoapClient' not found) và có mọi thứ được thực hiện câu trả lời cho biết. Nhưng vẫn gặp vấn đề.PHP: Lỗi nghiêm trọng: Lớp 'SoapClient' không được tìm thấy

Tôi cũng tìm thấy vấn đề tương tự ở đây (https://bugs.php.net/bug.php?id=64445) nhưng cũng không được giải quyết ở đó.

Tôi đang cố gắng để thiết lập một môi trường PHP + Apache trên Win 7 64.

  1. PHP: php-5.5.17-Win32-VC11-x86. Chủ đề an toàn.

  2. Apache: httpd-2.4.10-win32-VC11

Vì vậy, đây là C:\PHP\php.ini tôi cho SOAP. Tất cả mọi thứ được thiết lập một cách chính xác:

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 

Trong C:/PHP/ext thư mục Tôi có php_soap.dll tập tin, C:\PHP\ext\php_soap.dll.

Nhưng phpinfo(); lợi nhuận của tôi CHỈ này về SOAP:

enter image description here

tôi KHÔNG đã các thiết lập hiển thị:

enter image description here

Và tôi nhận được lỗi:

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

Tôi đã bỏ lỡ điều gì? Làm thế nào để giải quyết nó?

Trả lời

6

Điều này rất dễ dàng.

Bạn làm việc với Symfony2 tôi nghĩ và bạn sử dụng không gian tên. Chức năng này nằm trong Root-Namespace.

sử dụng:

\SoapClient() 

Nếu bạn đang ở trong không gian tên và họ không thể tìm thấy những lớp.

Bạn có cùng sự cố với lớp Exception chẳng hạn.

+0

đúng vậy, tôi đã có 'SoapClient() 'gọi lớp mà không \. Tôi đặt '\ SoapClient()' nhưng vấn đề vẫn là – Green

+0

Đây là một điều đặc biệt ngu ngốc để nghiên cứu vì sự nhầm lẫn giữa Xà phòng WSDL/không gian tên XML và không gian tên PHP. Cảm ơn bạn đã giải thích chính xác –

+1

Đối với người dùng Laravel trong tương lai, cũng vì bạn, vì Laravel sử dụng Symfony. 'sử dụng SoapClient;' –

0

Hãy thử cấu hình phần mở rộng bằng cách sử dụng đường dẫn:

extension=ext/php_soap.dll 

Trong phpinfo() bạn có thể thấy các đường quan trọng này:

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

Nhưng bạn có thể thay đổi thư mục ini nếu mong muốn trong httpd.conf:

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

NHƯNG XEM gì mở rộng dir bạn đang sử dụng:

extension_dir C:\php 

Trong phần "cốt lõi". Điều này cũng có thể được cấu hình.

1

Nếu bạn đang trên Linux và bạn đang thiếu phần mở rộng xà phòng, như tôi đã và bạn đã kích hoạt nó trong php.ini sau đó thử

apt-get install php-soap 
service apache2 restart 
2

tôi đã cùng một vấn đề trong một mô-đun tùy chỉnh Drupal 8 .

Nó sử dụng Symfony2 vì vậy chỉ cần thêm này trong điều khiển:

use SoapClient; 
Các vấn đề liên quan