Lỗi nghiêm trọng: Không tìm thấy lớp 'SoapClient'


202

Tôi đang thử một ví dụ về dịch vụ web đơn giản và tôi gặp lỗi này mặc dù tôi không bị lỗi extension=php_soap.dlltrong php.initệp:

Lỗi nghiêm trọng: Không tìm thấy lớp 'SoapClient' trong C: \ Program Files (x86) \ EasyPHP-5.3.9 \ www \ server.php trên dòng 2


3
Bạn có chắc chắn đã chỉnh sửa Apache / bin / php.ini và khởi động lại apache sau đó không ??
Shubham

Cảm ơn bạn. Tuyệt vời, tôi đã thay đổi một tập tin php.ini khác. Tôi đã tìm thấy một trong tệp Apache.
Figen Güngor

sudo apt-get install php7.0 cho những bạn chưa cài đặt nó
FoxMcCloud

Câu trả lời:


353

Chẩn đoán

Tra cứu sau đây trong tập tin kịch bản của bạn

phpinfo();

Nếu bạn không thể tìm thấy Soap Clientthiết lập enablednhư vậy: cách xà phòng sẽ xuất hiện trong phpinfo ()

Sửa chữa

Làm như sau:

  1. Xác định vị trí php.initrong thư mục bin apache của bạn , tức làApache/bin/php.ini
  2. Loại bỏ ;từ đầuextension=php_soap.dll
  3. Khởi động lại máy chủ Apache của bạn
  4. Tra cứu phpinfo();lại và kiểm tra xem bạn có thấy một bức tranh tương tự như bức ảnh trên không
  5. Nếu bạn làm, vấn đề được giải quyết!

Mặt khác, nếu điều này không giải quyết được vấn đề của bạn, bạn có thể muốn kiểm tra các yêu cầu đối với SOAP tại đây . Cũng trong phần bình luận, bạn có thể tìm thấy lời khuyên tốt về việc kết nối với https.


12
Đừng quên cũng không chú ý đến dòng này: ;extension=php_openssl.dll nếu WSDL bạn đang cố truy cập theo giao thức https
juliangonzalez

trong trường hợp của tôi, nó không được cài đặt và không có phần mở rộng = php_soap.dll trong php.in um sử dụng php5.6 centos6.9
zero8

7
Tôi đang sử dụng xamp và không chú extension=soapý làm thủ thuật.
SAMPro

3
sudo apt-get install php7.0-xà phòng cho những bạn chưa cài đặt nó
FoxMcCloud

1
Đối với tôi, SoapClientlớp vẫn không được tìm thấy. Tôi thấy nó được kích hoạt trong phpinfo (), tiện ích mở rộng được bật, openssl cũng được bật, mọi thứ đều ổn nhưng không tìm thấy lớp. Tôi sử dụng Wamperver 3.0 và PHP 5.6 và tôi đã khởi động lại Apache nhưng không giải quyết được vấn đề. Xin vui lòng giúp đỡ.
Đêm

149

Để cài đặt SOAP trong PHP-7, hãy chạy theo thiết bị đầu cuối Ubuntu của bạn:

sudo apt-get install php7.0-soap

Để cài đặt SOAP trong PHP-7.1, hãy chạy theo thiết bị đầu cuối Ubuntu của bạn:

sudo apt-get install php7.1-soap

Để cài đặt SOAP trong PHP-7.2, hãy chạy theo thiết bị đầu cuối Ubuntu của bạn:

sudo apt-get install php7.2-soap

Để cài đặt SOAP trong PHP-7.3, hãy chạy theo thiết bị đầu cuối Ubuntu của bạn:

sudo apt-get install php7.3-soap

11
Ngoài ra hãy chắc chắn chạy dịch vụ sudo apache2 tải lại
Steve Obbayi

9
Trong trường hợp của tôi, đó làsudo apt-get install php-soap
dhcgn

tôi đã nâng cấp lên php7 và đã quên cài đặt lại php70w-xà phòng (tôi luôn loại bỏ hoàn toàn phiên bản cũ của PHP)
zzapper

1
Phải làm gì nếu tôi muốn cài đặt php7.3-xà phòng :-)? Tôi bị lạc
chris

@chris bạn đã thử chưa:sudo apt-get install php7.2-soap
Nahid

21

Đối với AWS (RHEL):

sudo yum install php56-soap

(56 ở đây là 5.6 phiên bản PHP - đặt phiên bản của bạn ở đây).


3
Đây có thể là sudo yum install php56w-soap! Tôi đã quên w, và cài đặt này, và nó vẫn không hoạt động. Phải mất một thời gian để tìm ra điều này nhưng bây giờ nó hoạt động.
XUÂN NGÀY 12/1/2016

1
Đối với tôi, đó là sudo apt-get install php5.6-soap
Sukeshini

1
Không cần phiên bản, chỉ cần php-xà phòng
ampachts

15

Để cài đặt SOAP trong PHP5.6, hãy chạy theo thiết bị đầu cuối Ubuntu 14.04 của bạn:

sudo apt-get install php5.6-soap
service php5.6-fpm restart
service apache2 restart

Xem nếu SOAP đã được bật:

php -m

(Bạn sẽ thấy SOAP giữa văn bản trả lại.)


11

Tôi phải chạy

php-config --configure-options --enable-soap 

như root và khởi động lại apache.

Điều đó đã làm việc! Bây giờ cuộc gọi phpinfo () của tôi hiển thị phần SOAP.


1
rebootnên được đề cập rằng khởi động lại apache của nó, không phải khởi động lại máy chủ.
máy móc

8

Tôi couln't tìm các SOAPphần trong phpinfo()vì vậy tôi đã phải cài đặt nó.

Để biết thông tin, SOAPphần mở rộng yêu cầu libxmlphần mở rộng PHP. Điều này có nghĩa là việc nhập vào --enable-libxmlcũng được yêu cầu theo http://php.net/manual/en/soap.requirements.php

Từ bảng WHM

  1. Phần mềm »Trình cài đặt mô-đun» Gói ứng dụng và tiện ích mở rộng PHP
  2. Cài đặt SOAP 0.13.0

    CẢNH BÁO: "lê / HTTP_Request" không được dùng cho "lê / HTTP_Request2"

    cài đặt ok: channel: //pear.php.net/SOAP-0.13.0

  3. Cài đặt HTTP_Request2 (tùy chọn)

    cài đặt ok: channel: //pear.php.net/HTTP_Request2

  4. Khởi động lại dịch vụ »Máy chủ HTTP (Apache)

Từ lệnh shell

1. cài đặt SOAP

2.reboot


Giao diện EasyApache của WHM cũng có một tùy chọn để bật Soap trong danh sách Tùy chọn đầy đủ.
Andrew

8

Tôi đã giải quyết vấn đề này trên PHP 7.0.22-0ubfox0.16.04.1 nginx

sudo apt-get install php7.0-soap

sudo systemctl restart php7.0-fpm
sudo systemctl restart nginx

3

Đối với Docker * thêm dòng này:

RUN apt-get update && \
    apt-get install -y libxml2-dev && \
    docker-php-ext-install soap

*: Đối với hình ảnh dựa trên debian, tức là. sẽ không làm việc cho các biến thể núi cao.


1

Đối với người dùng XAMPP , mở php.initệp nằm trong C:/xampp/phpvà xóa tệp ;từ đầu extension=soap. Sau đó khởi động lại Apache và thế là xong!


0

Bạn phải kế thừa nusoap.phplớp và đặt nó vào thư mục dự án của bạn, bạn có thể tải xuống từ Internet .

Sử dụng mã này:

require_once('nusoap.php');

2
NuSoap tạo một Dịch vụ web (máy chủ). Câu hỏi ban đầu là sử dụng WebService (máy khách), vì vậy không có mối quan hệ nào giữa NuSoap và vấn đề được đề cập
Carlos B. Feitoza Filho 7/12/14

có lẽ bạn đang suy nghĩ điều gì đó tại thời điểm làm việc với nusoap, đó là lý do tại sao bạn đã từ bỏ điều này.
8

"Internet."
Attila Fulop

0

Trên Centos 7.8 và PHP 7.3

yum install php-soap
service httpd restart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.