คำเตือน PHP: PHP Startup: ไม่สามารถโหลดไดนามิกไลบรารี


102

ฉันเรียกใช้สคริปต์ PHP และได้รับข้อผิดพลาดนี้:

คำเตือน PHP: PHP Startup: ไม่สามารถโหลดไดนามิกไลบรารี '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' - / usr / local / lib / php / extensions /no-debug-non-zts-20090626/ixed.5.2.lin: ไม่สามารถเปิดไฟล์อ็อบเจ็กต์ที่แชร์: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าวใน Unknown ในบรรทัด 0

นั่นหมายความว่าอย่างไร?

คำตอบ:


57

หมายความว่ามีextension=...หรือzend_extension=...บรรทัดในไฟล์คอนฟิกูเรชัน php ของคุณ(php.ini หรืออีกไฟล์ใกล้เคียง)ที่พยายามโหลดส่วนขยายนั้น:ixed.5.2.lin

ขออภัยที่ไม่มีไฟล์หรือเส้นทางหรือสิทธิ์ไม่ถูกต้อง

  1. ลองค้นหาใน.iniไฟล์ที่ PHP โหลด ( phpinfo()สามารถระบุได้ว่าเป็นไฟล์ใด) หนึ่งในนั้นควรลองโหลดส่วนขยายนั้น
  2. แก้ไขเส้นทางไปยังไฟล์หรือแสดงความคิดเห็นในบรรทัดที่เกี่ยวข้อง

6
ดังนั้นฉันจึงได้รับข้อผิดพลาดนี้เช่นกัน แต่ไซต์ของฉันยังใช้งานได้นั่นเป็นส่วนที่แปลกประหลาดที่สุด สำหรับข้อผิดพลาดประเภทนี้ฉันคิดว่า php จะผิดพลาดตั้งแต่เริ่มต้น แต่ฉันได้รับหน้าของฉัน แต่คนตัดไม้ของฉันกำลังบันทึกข้อผิดพลาดนี้ แปลกเหรอ?
BT

1
ใน php.ini (/etc/php.ini ในกรณีของฉัน) ฉันแสดงความคิดเห็นเกี่ยวกับ line extension = php_pdo_mysql.dllและรีสตาร์ท Apache ซึ่งช่วยแก้ปัญหาของฉันและกำจัดคำเตือน (Mac, Maverick)
ola

แก้ไขเส้นทางที่เรากำลังพูดถึง?
prats1411

3. หรือติดตั้งส่วนขยายที่คาดไว้ที่ขาดหายไป
Andrew

@ prats1411 ในไฟล์ ini: extension = [path here]
Andrew

38

หากคุณใช้ Linux คุณสามารถค้นหาไฟล์คอนฟิกูเรชันที่โหลดทั้งหมดได้โดยพิมพ์สิ่งนี้ในเชลล์:

php -r "print phpinfo();" | grep ".ini"

อัปเดต: ตามที่ระบุไว้ในความคิดเห็นสิ่งนี้สามารถแม่นยำยิ่งขึ้น:

php -i | grep ini

5
php -i | grep iniควรทำงานได้ดีเช่นกัน (ไม่จำเป็นต้องพิมพ์ phpinfo เมื่อคุณมีอาร์กิวเมนต์คำสั่ง)
YorickH

1
ฉันมีข้อผิดพลาดที่คล้ายกัน แต่phpinfo()ไม่ได้แสดงรายการไฟล์ ini ที่มีปัญหา php -i | grep iniตามที่แนะนำโดยYorickHได้ผลสำหรับฉัน สิ่งนี้จะแสดงรายการไลบรารีที่โหลดสำหรับ CLI และเมื่อเปิดออกไฟล์ ini ที่ทำให้เกิดคำเตือนอยู่ภายใต้ไดเร็กทอรี CLI ในกรณีของฉัน
DaneeL

8
สิ่งที่เกี่ยวกับphp --iniรายการไฟล์ ini ทั้งหมด
OzzyCzech

17

หากคุณเพียงแค่ต้องการให้ข้อผิดพลาดหายไปและคุณไม่ต้องการส่วนขยายให้แสดงความคิดเห็นในบรรทัดphp.iniนั้น แต่ถ้าคุณต้องการแก้ไขปัญหาจริงๆนี่คือข้อมูลเพิ่มเติมบางส่วน

มีสาเหตุหลายประการตามโมดูลที่แน่นอน แต่ก็มีหลักเกณฑ์ทั่วไปบางประการเช่นกัน

  1. เปิดphpinfo()และมองหาextension_dirในCoreส่วน นี่คือตำแหน่งที่โมดูลของคุณควรอยู่

ตัวอย่างเช่น/usr/lib/php/modulesสำหรับ Unix / Linux

  1. หากไฟล์มีอยู่จริงตรวจสอบให้แน่ใจว่าสิทธิ์เพียงพอ
  2. หากไม่มีไฟล์อยู่ให้ใช้ทรัพยากรด้านล่างเพื่อติดตั้ง

การติดตั้งบน * nix (PEAR) การ
ติดตั้งส่วนขยายบน Windows


ฉันกำลังพยายามติดตั้งผ่านโมดูลลูกแพร์นี้ แต่เมื่อฉันเรียกใช้perl install <module>ฉันได้รับCan't open perl script "install": File or Directory not found
Fabiotk

ยากที่จะทราบปัญหาตรวจสอบเส้นทางและสิทธิ์ของคุณ
EternalHour

ถ้าอยู่ในตู้คอนเทนเนอร์ลองdocker-php-ext-install <package>
jiggunjer

นั่นช่วยให้ฉันค้นหาสิ่งนี้ใน php.ini แล้วเห็นว่าโฟลเดอร์ว่างเปล่า
frankfurt-laravel

16

phpStom กับ XAMPP

TL; DR ยกเว้นการตรวจสอบว่ามีไฟล์อยู่คุณอาจต้องเพิ่มอักษรระบุไดรฟ์ลงในบันทึกบางรายการในไฟล์ php.ini ของคุณ

จู่ๆฉันก็เริ่มมีปัญหาในการใช้ phpStorm 7 สำหรับการดีบัก php ด้วย xampp และ xdebug เมื่อพยายามตั้งค่า interperter intellij ให้เป็น xampps php ฉันได้รับคำเตือนมากมายเช่นเดียวกับในคำถามเช่น:

ไม่สามารถโหลดไดนามิกไลบรารี '/xampp/php/ext/php_bz2.dll'

ด้วยเหตุผลบางอย่างฉันต้องเพิ่มอักษรระบุไดรฟ์ในบันทึกของ extension_dir และ browscap ในไฟล์ php.ini:

extension_dir = "\xampp\php\ext"
browscap = "\xampp\php\extras\browscap.ini"

ถึง

extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"

2
สิ่งนี้แก้ไขให้ฉันใน Windows 10
Justin Eldracher

1
สิ่งนี้แก้ไขให้ฉันบน windows 7 ขอบคุณมาก
Paramjeet

การใช้extension_dir = "ext"งานเมื่อคุณเรียกใช้จาก cmd แต่เมื่อคุณเรียกใช้จาก Apache คุณอาจต้องใช้เส้นทางที่แน่นอน (พร้อมอักษรระบุไดรฟ์เป็นต้น)
Nux

6

php -r "echo php_ini_loaded_file();"

จะแสดงในไฟล์ที่โหลดในปัจจุบันของ CLI ค้นหาส่วนขยายของคุณเส้นทางไปยังไม่ถูกต้อง


4

กำลังโหลด. dll ใน Linux

ฉันได้พบข้อความเตือนนี้ในขณะที่ผมพยายามที่จะติดตั้งPHP นามสกุลผ่านphp.iniไฟล์

จนกว่าฉันจะรู้ว่าคุณไม่สามารถโหลดนามสกุล. dllใน Linux ได้

แต่คุณต้องแสดงความคิดเห็นเกี่ยวกับส่วนขยายที่คุณต้องการนำเข้า;extension= ... .dllและติดตั้งอย่างถูกต้องผ่านsudo apt-get install php-...

หมายเหตุ : ...คือชื่อส่วนขยายที่คุณต้องการเปิดใช้งาน


สำหรับฉันแล้วมันขาดการติดตั้งโมดูล - ฉันกำลังติดตั้ง phpPgAdmin และสิ่งที่ฉันต้องการในการติดตั้งอย่างชัดเจนคือsudo apt install php-pgsqlและเฉพาะเวอร์ชัน php sudo apt install php7.1-pgsql(เปลี่ยน 7.1 เป็นเวอร์ชัน php ของคุณ)
jave.web

3

โปรดทราบว่าคุณสามารถรับข้อผิดพลาดนี้ได้หากไลบรารี PHP ของคุณไม่มีสิทธิ์เปิดไดเร็กทอรี "อื่น ๆ " ในกรณีเฉพาะของฉันฉันสังเกตเห็นสิ่งนี้เมื่อใช้php -lไวยากรณ์ตรวจสอบสคริปต์ในโปรแกรมแก้ไขข้อความของฉัน นั่นหมายความว่าเนื่องจากบัญชีของฉันถูกเรียกว่า "volomike" บัญชีนั้นจึงไม่ได้รับอนุญาตให้เรียกใช้ไลบรารีที่phpคำสั่งนั้นใช้

ยกตัวอย่างเช่นบน Ubuntu 14.04 ผมก็มีการติดตั้ง PHP5 /usr/lib/php5/20121212+lfsโดยอัตโนมัติในเส้นทาง แต่เนื่องจากผมทำงานใน C ++ ในการสร้างวัตถุที่ใช้ร่วมกันบางอย่างผม messed รอบด้วยสิทธิ์ไดเรกทอรีและสิ่งที่เมาขึ้นเช่นที่บัญชีที่ไม่ใช่รากไม่ได้มีไดเรกทอรีรัน (ไดเรกทอรีเปิด) /usr/lib/php5/20121212+lfsสิทธิ์ในการมุมมอง ดังนั้นฉันจึงพิมพ์คำสั่งต่อไปนี้เพื่อแก้ไขปัญหานั้น:

sudo chmod o+x /usr/lib/php5/20121212+lfs.

ตอนนี้เมื่อฉันทำphp -l example.phpในฐานะผู้ใช้ที่ไม่ใช่รูทมันจะไม่ทำให้ฉันมีปัญหา "ไม่สามารถโหลดไดนามิกไลบรารี" อีกต่อไป


นี่เป็นวิธีแก้ปัญหาที่แน่นอนสำหรับฉันโดยใช้ Ubuntu 16.10 ตรวจสอบให้แน่ใจว่าคุณได้เปลี่ยนนามสกุล "extension" เป็น. ดังนั้นเมื่อใช้ Linux (config มาตรฐานให้ฉันเป็น. dll)
mroesler

ฉันใช้ linux mint 18 และยังใช้ได้อยู่
Dika

2

ฉันมีปัญหาเดียวกันกับ XAMPP สำหรับ Windows เมื่อฉันพยายามติดตั้งตัวแต่ง ฉันทำphp -vและ php โยนผิดพลาด:

ไม่สามารถโหลดไดนามิกไลบรารี '/xampp/php/ext/php_bz2.dll'

ฉันใช้เวลาสักพักกว่าจะรู้ว่าต้องตั้งค่า XAMPP ดังนั้นฉันจึงเรียกใช้setup_xampp.batและ php กลับมาทำงานอย่างมีเสน่ห์


2

ฉันมีปัญหาเดียวกันกับ XAMPP สำหรับ Windows10 เมื่อฉันพยายามติดตั้งตัวแต่ง

ไม่สามารถโหลดไดนามิกไลบรารี '/xampp/php/ext/php_bz2.dll'

จากนั้นทำตามขั้นตอนนี้

  1. เพียงแค่เปิด current_xampp_containing_drive: \ xampp (default_xampp_folder) \ php \ php.ini ใน texteditor (เช่น notepad ++)
  2. ตอนนี้เพิ่งพบ - current_xampp_containing_drive: \ xampp มีอยู่หรือไม่
  3. ถ้าไม่ให้ค้นหา "extension_dir" และรับชื่อไดรฟ์ (c, d หรือไดรฟ์ที่คุณต้องการ) เช่น

extension_dir = "F: \ xampp731 \ php \ ext" (ที่นี่ finded_drive_name_from_the_file คือ F)

  1. อีกครั้งแทนที่ด้วย finded_drive_name_from_the_file: \ xampp ด้วย current_xampp_containing_drive: \ xampp และบันทึก
  2. ตอนนี้เริ่มความคืบหน้าการติดตั้งผู้แต่งอีกครั้งฉันคิดว่าปัญหาของคุณจะได้รับการแก้ไข

1

ฉันมีข้อผิดพลาดนี้ในหลายโมดูลเมื่อฉันใช้ PHP เวอร์ชันต่างๆเคียงข้างกันบนเซิร์ฟเวอร์ของฉัน ในการจัดเรียงสิ่งนี้ฉันต้องติดตั้งแพ็คเกจที่ไม่พบสำหรับเวอร์ชัน PHP เฉพาะนั้น ตัวอย่างเช่นถ้าฉันเห็น: -

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'

ฉันจะติดตั้งไลบรารีสำหรับเวอร์ชัน PHP โดยเฉพาะ: -

sudo apt-get install php7.1-xml

จากนั้นรีสตาร์ท Apache แก้ไขให้ฉัน คุณสามารถตรวจสอบเวอร์ชันของคุณได้ดังนี้: -

php -v

1

หลังจากWindows 10 XAMPPนี้ฉันติดตั้งLAMPP (XAMPP)บน Ubuntu Windows XAMPPมีการกำหนดค่าน้อยกว่ามากเมื่อเทียบกับ MAC (iOS) แต่ตอนนี้ด้วย Linux Ubuntu ฉันมีอีกสองสามอย่างเนื่องจากมีการใช้งาน Linux มากขึ้น (เป็นสิ่งที่ดี)

ฉันสับสนและเปิดใช้งานmysqli.dll(และ mysql.dll: ลบ "#" ใน/etc/php/7.2/cli/php.ini

ผมเริ่มที่จะได้รับข้อความที่เกี่ยวข้องกับการPHP Warning: PHP Startup: Unable to load dynamic library dllผมออกความเห็นmysql(and i).dllในไฟล์เดียวกัน แต่ข้อความไม่ได้หายไปขึ้นจนกว่าฉันจะออกความเห็น "" /opt/lampp/etc/php.iniใน

ดูเหมือนว่า XAMPP อ่านphp.iniไฟล์/etc/php/7.2/cliและทำให้การปรับเปลี่ยนในของphp.ini /opt/lampp/etc(; extension = php_pdo_mysql.dll หลัง ";" รีสตาร์ท Apache และไม่มีข้อความใด ๆ อีก


1

ในกรณีของฉันฉันมีข้อผิดพลาดนี้เพราะผมดาวน์โหลดรุ่นด้ายปลอดภัยของ dll (ที่ infixed ด้วย-ts-) แต่การติดตั้ง PHP PHP ของฉันเป็นที่ไม่ด้ายปลอดภัย (infixed ด้วย-nts-) การดาวน์โหลดเวอร์ชันที่ถูกต้องของ dll ซึ่งตรงกับเวอร์ชันการติดตั้ง php ของฉันช่วยแก้ปัญหาได้


1
หากต้องการตรวจสอบการกำหนดค่าความปลอดภัยของเธรดเซิร์ฟเวอร์โปรดดู phpinfo () และthread-safetyเปิดใช้งาน / ปิดใช้งาน มีข้อผิดพลาดเดียวกันในการย้อนกลับ nts ที่ดาวน์โหลดเมื่อกำหนดค่าสำหรับ ts
Andy


0

ใน Windows อาจเป็นเส้นทางที่ไม่ถูกต้องใน "ตัวแปรสภาพแวดล้อมระบบ" "เส้นทาง" ไปยังไดเร็กทอรี php.exe ต้องเป็นไดเร็กทอรีที่ดี



0

สิ่งที่ฉันทำคือ;

1 - ก่อนอื่นฉันจะค้นหาว่าฉันใช้ PHP เวอร์ชันใดผ่านฟังก์ชัน phpinfo ()

<?php   
    phpinfo();
?>

2 - จากตรงนั้นคุณจะพบตำแหน่งของไฟล์การกำหนดค่า (php.ini) ของคุณ

วิธี phpinfo () ผลลัพธ์

3 - เปิดไฟล์นั้น

4 - แสดงความคิดเห็นในบรรทัดที่คล้ายกับภาพด้านล่าง

ค่านี้อาจเป็นค่าอื่น แต่ควรเกี่ยวข้องกับส่วนขยาย ฉันไม่ใช่ผู้เชี่ยวชาญ แต่กระบวนการนี้ช่วยฉันแก้ปัญหาที่คล้ายกันได้

ป้อนคำอธิบายภาพที่นี่


0

'C: /PHP/5.2.13/ext \ php_mcrypt1.dll'

ฉันจะบอกว่ามีการพิมพ์ผิดใน php.ini ของคุณ (ส่วนพิเศษ 1) บางทีคุณกำลังโหลด php.ini ที่แตกต่างจากที่คุณคาดหวัง (ดูผลลัพธ์ของ php.ini เพื่อให้แน่ใจ)

นอกเหนือจากนั้นตรวจสอบให้แน่ใจว่า php_mcrypt.dll และ PHP:

ถูกเชื่อมโยงกับไลบรารีรันไทม์ VC เดียวกัน (โดยทั่วไปคือ msvcrt.dll สำหรับ VC6 หรือ msvcrt90.dll สำหรับ VC9) - ใช้เช่นตัวช่วยในการพึ่งพาสำหรับสิ่งนี้เป็นทั้งการสร้างการแก้ปัญหาหรือการสร้างรุ่นทั้งสองรุ่นมีการเปิดใช้งาน ZTS หรือปิดใช้งาน ZTS สำหรับไลบรารีที่ขึ้นอยู่กับ ไลบรารีเพิ่มเติม (DLL) ตรวจสอบให้แน่ใจว่ามีอยู่ (เช่นในไดเร็กทอรีเดียวกันกับส่วนขยาย) PHP ควรให้ข้อผิดพลาดที่มีความหมายหากเงื่อนไขสามข้อแรกข้างต้นไม่เป็นที่พอใจ แต่ฉันก็เขียนสิ่งเหล่านี้อยู่ดีเพราะฉันไม่แน่ใจ สำหรับ PHP 5.2


0

ในกรณีของฉันข้อความนี้เริ่มปรากฏขึ้นเมื่อฉันอัปเดตเวอร์ชัน php เป็น 7.4

ในการแก้ปัญหาฉันต้องค้นหาไฟล์ php.ini ที่พบในโฟลเดอร์เวอร์ชัน php (/etc/php/7.4/apache2/ && /etc/php/7.4/cli/) ตรวจสอบบรรทัดที่ส่วนขยายที่ฉันเห็น ส่วนขยาย gd2 และ intl ไม่มีการแสดงความคิดเห็น


0

จาก C: \ xampp \ php \ php.exe ฉันได้รับ

  • ไม่สามารถโหลดไลบรารีไดนามิก ''
  • C: \ xampp \ php \ ext \ php_.dll (ไม่พบโมดูลที่ระบุ)

ฉันแก้ไขโดยการแสดงความคิดเห็น
C: \ xampp \ php \ php.ini
; extension =


-1

ฉันมีปัญหาที่คล้ายกันและการร้องเป็นคำเตือน / ข้อผิดพลาดทั้งหมด

Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: C:\php\ext\curl 
(The specified module could not be found.), C:\php\ext\php_curl.dll (The specified 
module 
could not be found.)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'fileinfo' (tried: 
C:\php\ext\fileinfo (The specified module could not be found.), 
C:\php\ext\php_fileinfo.dll (The specified module could not be found.)) in Unknown on 
line 0

หากคุณตรวจสอบคำเตือนคุณจะเห็นว่ากำลังมองหาส่วนขยาย php อยู่C:\php\ext\ฉันดาวน์โหลด php ไปยังC:\ไดเร็กทอรีและแก้ไขปัญหาได้

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