วิธีแก้ `configure: error: ไม่พบ <evp.h>` ของ OpenSSL?


33

ฉันกำลังพยายามคอมไพล์ PHP ใหม่ แต่. / การกำหนดค่าล้มเหลวที่:

configure: error: Cannot find OpenSSL's <evp.h>

ฉันมี LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL ติดตั้ง

--with-openssl=/usr/include/openssl

เมื่อฉันลองด้วย

--with-openssl

บอกฉัน:

configure: ข้อผิดพลาด: ไม่พบไลบรารีของ OpenSSL

ปัญหาอยู่ที่ไหน

PS Php คือ 5.2.5 ระบบปฏิบัติการคือ Ubuntu

คำตอบ:


47

ปัญหาเดียวกันนี้เกิดขึ้นUbuntu 12.04.1 LTSและได้รับการแก้ไขโดยการออก:

sudo apt-get install libcurl4-openssl-dev pkg-config


สวัสดี :) ฉันลืมฉันจะแก้ปัญหาของฉันได้อย่างไร :) เมื่อครึ่งปีที่แล้ว
CappY

2
เป็นวิธีการที่libcurl4-openssl-devแตกต่างจากlibssl-dev?
Gherman

16

ในการสร้าง php-5.3 บน Debian wheezy คุณต้องมีสิ่งต่อไปนี้เพื่อแก้ไขข้อผิดพลาดนี้

apt-get install libssl-dev libsslcommon2-dev

จากนั้นคุณจะต้องกำหนดค่าด้วยสิ่งต่อไปนี้

./configure --with-libdir=/lib/x86_64-linux-gnu ...

2
1+ ช่วยฉันมาก --with-php-config /usr/local/src/php-x.x.x/scripts/php_configฉันยังมีการเพิ่ม ฉันได้เขียนวิธีการคอมไพล์ PHP ด้วยส่วนขยาย
แดเนียลดับเบิลยู.

ใช้งานได้ แต่ล้มเหลวทุกกรณีทดสอบ
Rafael

ทำงานเพื่อคอมไพล์ PHP5.2 ด้วยตนเองบน Ubuntu 14.04 ด้วยคำสั่ง "--with-openssl" ขอบคุณมาก.
ดร. ฉัน

12

สมมติว่าคุณมีไลบรารี OpenSSL และไฟล์ส่วนหัวอยู่แล้ว (ในระบบรอบต่อนาทีส่วนหลังจะอยู่ในแพ็คเกจ xxxx-devel) ...

ดูเหมือนว่าปัญหาจะเกิดขึ้นจากวิธีการconfigureแก้ไขการพึ่งพาซึ่งกระจายอยู่รอบระบบไฟล์ ในการรวบรวมรหัสคอมไพเลอร์จำเป็นต้องรู้ว่าส่วนหัวอยู่ที่ใด ในการเชื่อมโยงรหัสตัวเชื่อมโยงจำเป็นต้องทราบว่าไลบรารีอยู่ที่ไหน

[colin@host]$ configure .... --with-openssl-dir=/usr/include/openssl ....
...
checking OpenSSL dir for FTP... /usr/include/openssl
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>

[colin@host]$ find /usr/include -name evp.h
/usr/include/openssl/evp.h

ไดเร็กทอรี include มีไฟล์ include แต่ pkg-config ล้มเหลวเนื่องจากไลบรารีไม่ได้อยู่ใน / usr / include / openssl, ใน / usr / lib

รันการกำหนดค่าอีกครั้งด้วย / usr เป็นไดเรกทอรี:

configure .... --with-openssl-dir=/usr ....
...
checking OpenSSL dir for FTP... /usr
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6
checking for CRYPTO_free in -lcrypto... yes
...

เส้นทางที่ผ่านเป็นอาร์กิวเมนต์จะถูกค้นหาเพื่อค้นหาทรัพยากรที่เกี่ยวข้อง


สิ่งนี้ใช้ได้สำหรับฉัน นี่เป็นทางออกที่ดี
Shawn Welch

นี่เป็นวิธีแก้ปัญหาบน debian wheezy + php 5.3.10! ขอขอบคุณ!!!!
holms

@holms: ตอนนี้มันเป็น php เวอร์ชั่นเก่า โดยเฉพาะอย่างยิ่งถ้าคุณจะใช้คอมไพล์จากแหล่งแทนที่จะเป็นแพ็คเกจที่มีการจัดการคุณควรใช้รีลีสล่าสุด
symcbean

นี่เป็นวิธีการแก้ปัญหาสำหรับผมที่สร้างบนphp-7.1.12 Debian Jessieขอบคุณ
ako

10

สาเหตุอื่น./configureอาจล้มเหลวเนื่องจากคุณไม่ได้pkg-configติดตั้งเช่นในกรณีของฉันกับ PHP7 และ Debian Jessie:

sudo apt-get install pkg-config

2
นั่นเป็นคำตอบที่ต่างออกไปจากเมื่อสามปีก่อน
kasperd

9

เพื่อรวบรวม php-5.4.45 บนเดเบียน 8.1 (เจสซี) ฉันต้อง:

apt-get install libssl-dev

หลังจากนั้นฉันก็สามารถรวบรวมได้โดยใช้ --with-openssl


2

ฉันแก้ไขปัญหาด้วยการติดตั้งไลบรารีเพิ่มเติม

sudo apt-get install -y autoconf g++ make openssl libssl-dev libcurl4-openssl-dev
sudo apt-get install -y libcurl4-openssl-dev pkg-config
sudo apt-get install -y libsasl2-dev


0

คุณต้องช่วยกำหนดค่าการหาตำแหน่งที่จะมองหาไฟล์ evp.h เพราะโดยปกติแล้วมันจะสแกนหาไดเรกทอรีและเพิ่มคำต่อท้ายแบบ hardcoded ให้พวกเขาค้นหา ฉันเก็บรายละเอียดไว้ในหน้า wiki ของฉันสำหรับผู้ที่ต้องการเข้าใจวิธีการแก้ปัญหา นี่คือสิ่งที่ทำงานสำหรับฉัน:

root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # PHP_OPENSSL_DIR="/usr /usr/lib/x86_64-linux-gnu"
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # ./configure --with-libdir=""
[...]
checking for DSA_get_default_method in -lssl... yes
checking for X509_free in -lcrypto... yes
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6 #                     <------------------------------------- YES !
[...]
config.status: creating config.h
config.status: config.h is unchanged
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # 

YMMV (เส้นทางแตกต่างกัน) หากวิธีนี้ใช้ไม่ได้ผลให้คุณตรวจสอบหน้าวิกิมันจะช่วยให้คุณทราบว่าจะใส่เส้นทางใด


0

ฉันมีปัญหาเดียวกันกับ Fedora 19 แม้จะติดตั้ง OpenSSL แล้วก็ตาม

ฉันต้องติดตั้ง openssl-devel.i686 ซึ่งฉันพบโดยทำการค้นหาทั่วไปสำหรับแพ็คเกจทั้งหมดที่เกี่ยวข้องกับ ssl:

sudo yum search ssl
sudo yum install openssl-devel.i686

จากนั้นฉันก็กำหนดค่าอีกครั้งด้วยความสำเร็จ:

sudo ./configure --with-apxs2=/usr/bin/apxs --with-mysql --enable-mbstring --with-mysqli --with-openssl=/usr/

0

เพียงข้อเสนอแนะของฉัน: หลังจากแก้ปัญหา ssl นี้จากโพสต์ thsi ฉันได้ให้การคอมไพล์ php 5.3 อย่างสมบูรณ์เพราะมันล้มเหลวกว่าในส่วนขยาย zend dom ที่อยู่ตรงกลางฉันพบแพทช์และตัดสินใจที่จะทิ้งเอะอะนี้ . มี ubuntu 12.04 ซึ่งยังมี 5.3.10 php อยู่บนบอร์ด ระวัง php-fpm ก่อนแล้วจึงทำการล้างตัวแปรสภาพแวดล้อม ดังนั้นอย่าแปลกใจเมื่อคุณไม่สามารถผ่านตัวแปรโกลบอลจากนักเทียบท่าเช่น

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