ข้อผิดพลาดร้ายแรง: ไม่พบคลาส 'SoapClient'


202

ฉันกำลังลองตัวอย่างบริการเว็บง่ายๆและฉันพบข้อผิดพลาดนี้แม้ว่าฉันจะไม่แสดงความคิดเห็นextension=php_soap.dllในphp.iniไฟล์:

ข้อผิดพลาดร้ายแรง:ไม่พบคลาส 'SoapClient' ในไฟล์ C: \ Program (x86) \ EasyPHP-5.3.9 \ www \ server.php ที่บรรทัด 2


3
คุณแน่ใจหรือว่าคุณแก้ไข Apache / bin / php.ini และเริ่ม apache ใหม่หลังจากนั้น ??
Shubham

ขอบคุณ. เห็นได้ชัดว่าฉันเปลี่ยนไฟล์ php.ini อีกไฟล์ ฉันพบสิ่งนั้นในไฟล์ Apache
Figen Güngör

sudo apt-get install php7.0 สำหรับผู้ที่ยังไม่ได้ติดตั้ง
FoxMcCloud

คำตอบ:


353

วินิจฉัย

ค้นหาสิ่งต่อไปนี้ภายในไฟล์สคริปต์ของคุณ

phpinfo();

หากคุณไม่สามารถSoap Clientตั้งค่าให้เป็นenabledเช่นนั้น: วิธีที่สบู่ควรปรากฏใน phpinfo ()

แก้ไข

ทำดังต่อไปนี้:

  1. ค้นหาphp.iniในโฟลเดอร์apache bin ของคุณเช่นApache/bin/php.ini
  2. ลบออก;จากจุดเริ่มต้นของextension=php_soap.dll
  3. รีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณ
  4. ค้นหาphpinfo();อีกครั้งและตรวจสอบว่าคุณเห็นภาพคล้ายกับภาพด้านบน
  5. หากคุณแก้ปัญหาได้!

ในทางตรงกันข้ามถ้านี้ไม่ได้แก้ปัญหาของคุณคุณอาจต้องการที่จะตรวจสอบความต้องการสำหรับสบู่ที่นี่ นอกจากนี้ในส่วนความคิดเห็นคุณสามารถค้นหาคำแนะนำที่ดีเกี่ยวกับการเชื่อมต่อกับ https


12
อย่าลืมที่จะไม่;extension=php_openssl.dll ใส่เครื่องหมายความคิดเห็นในบรรทัดนี้: หาก WSDL ที่คุณพยายามเข้าถึงนั้นอยู่ภายใต้โปรโตคอล https
juliangonzalez

ในกรณีของฉันมันไม่ได้ติดตั้งและไม่มีส่วนขยาย = php_soap.dll ใน php.in um โดยใช้ php5.6 centos6.9
zero8

7
ฉันกำลังใช้ xamp และเพียงแค่extension=soapไม่แสดงข้อคิดเห็นทำเคล็ดลับ
SAMPro

3
sudo apt-get install php7.0-soap สำหรับผู้ที่ยังไม่ได้ติดตั้ง
FoxMcCloud

1
สำหรับฉันแล้วSoapClientยังไม่พบชั้นเรียน ฉันเห็นมันเปิดใช้งานใน phpinfo () ส่วนขยายถูกเปิดใช้งาน openssl ถูกเปิดใช้งานด้วยทุกอย่างก็โอเค แต่ไม่พบคลาส ฉันใช้ Wampserver 3.0 และ PHP 5.6 และฉันเริ่ม Apache ใหม่ แต่ไม่ได้แก้ปัญหา กรุณาช่วย.
วันที่

149

ในการติดตั้ง SOAP ใน PHP-7 ให้รันดังต่อไปนี้ในเทอร์มินัล Ubuntu ของคุณ:

sudo apt-get install php7.0-soap

ในการติดตั้ง SOAP ใน PHP-7.1 ให้รันดังต่อไปนี้ในเทอร์มินัล Ubuntu ของคุณ:

sudo apt-get install php7.1-soap

ในการติดตั้ง SOAP ใน PHP-7.2 ให้รันดังต่อไปนี้ในเทอร์มินัล Ubuntu ของคุณ:

sudo apt-get install php7.2-soap

ในการติดตั้ง SOAP ใน PHP-7.3 ให้รันดังต่อไปนี้ในเทอร์มินัล Ubuntu ของคุณ:

sudo apt-get install php7.3-soap

11
นอกจากนี้อย่าลืมเรียกใช้บริการ sudo apache2 reload อีกครั้ง
Steve Obbayi

9
ในกรณีของฉันมันเป็นsudo apt-get install php-soap
dhcgn

ฉันอัปเกรดเป็น php7 และลืมติดตั้ง php70w-soap อีกครั้ง (ฉันลบ PHP รุ่นเก่าออกอย่างสมบูรณ์เสมอ)
zzapper

1
จะทำอย่างไรถ้าฉันต้องการติดตั้ง php7.3-soap :-) ฉันหลงทาง.
ริส

คุณได้ลอง @chris:sudo apt-get install php7.2-soap
Nahid

21

สำหรับ AWS (RHEL):

sudo yum install php56-soap

(56 ที่นี่คือ 5.6 PHP เวอร์ชัน - ใส่รุ่นของคุณที่นี่)


3
นี่อาจจะเป็นsudo yum install php56w-soap! ฉันลืม w และการติดตั้งนี้และยังคงไม่ทำงาน ใช้เวลาสักพักกว่าจะคิดออก แต่ตอนนี้มันใช้งานได้
SPRBRN

1
สำหรับฉันมันคือ sudo apt-get install php5.6-soap
Sukeshini

1
ไม่จำเป็นต้องใช้เวอร์ชั่นเพียงแค่ php-soap
ampachts

15

ในการติดตั้ง SOAP ใน PHP5.6 ให้รันดังต่อไปนี้ในเทอร์มินัล Ubuntu 14.04 ของคุณ:

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

ดูว่าเปิดใช้งาน SOAP:

php -m

(คุณควรเห็น SOAP ระหว่างข้อความที่ส่งคืน)


11

ฉันต้องวิ่ง

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

เป็น root และเริ่ม apache ใหม่

นั่นได้ผล! ตอนนี้การเรียก phpinfo () ของฉันแสดงส่วน SOAP


1
rebootควรกล่าวถึงว่ารีบูต apache ไม่ใช่รีบูตเซิร์ฟเวอร์
machineaddict

8

ผมcouln't พบSOAPส่วนในphpinfo()เพื่อให้ฉันได้ติดตั้ง

สำหรับข้อมูลSOAPส่วนขยายต้องการlibxmlส่วนขยาย PHP ซึ่งหมายความว่า--enable-libxmlจำเป็นต้องมีการส่งผ่านตามhttp://php.net/manual/en/soap.requirements.php

จากแผง WHM

  1. ซอฟต์แวร์»โมดูลการติดตั้ง»ส่วนต่อขยาย PHP & แพ็คเกจแอปพลิเคชัน
  2. ติดตั้ง SOAP 0.13.0

    คำเตือน: "pear / HTTP_Request" ถูกคัดค้าน "pear / HTTP_Request2"

    ติดตั้ง ok: channel: //pear.php.net/SOAP-0.13.0

  3. ติดตั้ง HTTP_Request2 (ไม่บังคับ)

    ติดตั้ง ok: channel: //pear.php.net/HTTP_Request2

  4. บริการเริ่มต้นใหม่»เซิร์ฟเวอร์ HTTP (Apache)

จากคำสั่งเชลล์

1. แพร์ติดตั้ง SOAP

2.reboot


อินเตอร์เฟส EasyApache ของ WHM มีตัวเลือกสำหรับเปิดใช้งาน Soap ในรายการตัวเลือกการหมดจด
แอนดรู

8

ฉันแก้ไขปัญหานี้ใน PHP 7.0.22-0ubuntu0.16.04.1 nginx

sudo apt-get install php7.0-soap

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

3

สำหรับ Docker * เพิ่มบรรทัดนี้:

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

*: สำหรับภาพที่ใช้เดเบียนเช่น จะไม่ทำงานสำหรับตัวแปรอัลไพน์


1

สำหรับผู้ใช้ XAMPPเปิดphp.iniไฟล์ที่อยู่ในC:/xampp/phpและลบจากจุดเริ่มต้นของ; extension=soapจากนั้นเริ่มต้น Apache ใหม่และนั่นแหละ!


0

คุณจะต้องสืบทอดnusoap.phpระดับและวางไว้ในไดเรกทอรีโครงการของคุณคุณสามารถดาวน์โหลดได้จากอินเทอร์เน็ต

ใช้รหัสนี้:

require_once('nusoap.php');

2
NuSoap สร้างบริการบนเว็บ (เซิร์ฟเวอร์) คำถามเริ่มต้นสำหรับการบริโภค WebService (ลูกค้า) ดังนั้นจึงไม่มีความสัมพันธ์ระหว่าง NuSoap กับปัญหาดังกล่าว
Carlos B. Feitoza Filho

บางทีคุณคิดว่าบางสิ่งบางอย่างในขณะที่ทำงานกับ nusoap นั่นคือเหตุผลที่คุณคิดเรื่อง
zero8

"อินเตอร์เนต."
อัตติลาฟูลอป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.