นามสกุล Mcrypt หายไปในเซิร์ฟเวอร์ 14.04 สำหรับ mysql


112

ส่วนต่อขยาย mcrypt ของ php บน Ubuntu 14.04 แสดงว่าติดตั้งอย่างถูกต้อง แต่ phpmyadmin พูดว่า:

 The mcrypt extension is missing. Please check your PHP configuration.

การตั้งค่าของฉัน PHP ปัจจุบันคือที่นี่ หากคุณต้องการข้อมูลอีกต่อไปโปรดติดต่อฉันผ่านความคิดเห็น

$ sudo apt-get install php5-mcrypt
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    php5-mcrypt is already the newest version.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

7
คำตอบที่ยอมรับไม่ใช่วิธีปฏิบัติที่ดีที่สุด ที่ง่ายและถูกต้องคำตอบ: http://askubuntu.com/a/477608/139249ยังมีคะแนนโหวตมากที่สุด
ไมค์สจ๊วต

สำหรับการอ้างอิงของผู้อื่นคำตอบ "ง่ายที่สุด" ไม่ได้ผลสำหรับฉัน php5enmod mcryptทำให้แข็งขึ้น Apache php5dismod mcryptปลดปล่อยมันขึ้นมาอีกครั้ง ฉันไปกับคำตอบที่ยอมรับและปรับเปลี่ยนเส้นทางextension=..และคราวนี้php5enmod mcryptใช้ได้ ใช่แล้วมันครอบคลุมและควรเป็นคำตอบที่ได้รับการยอมรับ
Oliver Williams

คำตอบ:


138

ลองสิ่งนี้:

sudo updatedb 
locate mcrypt.ini

ควรแสดงอยู่ที่ / etc / php5 / mods-available

locate mcrypt.so

แก้ไข mcrypt.ini และเปลี่ยนนามสกุลให้ตรงกับเส้นทางกับ mcrypt.so ตัวอย่าง:

extension=/usr/lib/php5/20121212/mcrypt.so

ตอนนี้

sudo php5enmod mcrypt - (optional since its already enabled during phpmyadmin setup)

ตรวจสอบว่ามีไฟล์ใหม่อยู่ที่นี่ (ควรสร้างโดยอัตโนมัติจากปัญหาด้านบน)

ls -al /etc/php5/cli/conf.d/20-mcrypt.ini
ls -al /etc/php5/apache2/conf.d/20-mcrypt.ini

มิฉะนั้นให้ทำดังต่อไปนี้

สร้างลิงก์สัญลักษณ์ทันที

sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/cli/conf.d/20-mcrypt.ini
sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.ini

รีสตาร์ท Apache

sudo service apache2 restart

รีสตาร์ท php5 หรือ php5-fpm

sudo service php5 restart

นี่มันผิด! ฉันคิดว่าคุณหมายถึงสิ่งที่ชอบ: sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini และไม่ใช่วิธีอื่น ๆ
wolfdawn

14
ทำเพียงแค่php5enmod mcryptทำงานได้อย่างราบรื่นสำหรับฉัน
diosney

3
การรันphp5enmod mcryptจะสร้างลิงก์สัญลักษณ์เหล่านั้นให้คุณ ไม่จำเป็นต้องทำด้วยตนเอง (เช่นคุณสามารถข้ามln -sคำสั่ง)
Serrano

1
การรันphp5enmod mcryptเป็นวิธีที่ถูกต้องของ Ubuntu / Debian แม้ว่าคำตอบนี้จะใช้งานได้เป็นเรื่องยุ่งยากและไม่ใช่วิธีปฏิบัติที่ดีที่สุด
ไมค์สจ๊วต

1
หลายขั้นตอนข้างต้นไม่จำเป็น ดูคำตอบของ @ MURATSPLAT
Raptor

155

ลองทำสิ่งนี้:

sudo php5enmod mcrypt

แล้ว:

sudo service apache2 restart 

ฉันได้ติดตั้ง Ubuntu 14.04 (เวอร์ชันเดสก์ท็อป) ใหม่กับคอมพิวเตอร์ของฉันแล้ว วิธีนี้ใช้ได้กับการเปิดใช้ mcrypt ที่ติดตั้งไว้แล้ว


5
หมายเหตุหากคุณใช้งานnginxด้วย php5-fpm - จากนั้นphp5-fpm service restart(หรือโหลดซ้ำหากได้รับการติดตั้งในที่สุด)
mike stewart

2
สิ่งที่ทั้งสองคำสั่งทำคือ: บรรทัดที่ 1 เปิดใช้งานโมดูลชื่อ 'mcrypt' จากนั้นรีสตาร์ท apache2 เพื่ออัปเดตการกำหนดค่า /etc/apache2/mods-availableท่านสามารถเข้าดูโมดูลที่เปิดใช้งานจาก สนุกไปกับ LAMP life :)
itiskj

sudo service apache2 reloadก็พอไม่จำเป็นต้องรีสตาร์ทจริง (ในวันที่ 14.04 ต่อไปนั่นคือสิ่งที่ฉันได้ลอง)
Jasper

55

ติดตั้งmcryptส่วนขยายสำหรับ PHP เปิดใช้งานและรีสตาร์ท Apache ต่อไปนี้เป็นคำสั่งที่ต้องทำ:

sudo apt-get install mcrypt php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart

1
ง่าย สมบูรณ์ ทำงานได้โดยไม่มีปัญหาอย่างน้อยสำหรับฉันใน Ubuntu 14.04.1 LTS (เชื่อถือได้)
Gor

มันทำงานบนอูบุนตู 14.10 ด้วย
Coca Akat

ฉันอยากจะแนะนำคุณไม่รวมmcryptอยู่ในบรรทัดแรกของคุณ มันถูกติดตั้งโดยปริยายว่าเป็นการพึ่งพาphp5-mcryptแต่ถ้าคุณติดตั้งอย่างชัดเจนมันฉลาด - จะไม่ทราบว่าจะลบมันถ้าคุณเลือกที่จะถอนการติดตั้งph5-mcryptแพคเกจในภายหลัง
beldaz

@beldaz มีอย่างน้อยหนึ่งเซิร์ฟเวอร์ที่ติดตั้ง php5-mcrypt ตาม apt-get แต่ mcrypt ขาดหายไปเนื่องจากโมดูล pnp ไม่ได้รับการเปิดใช้งานซึ่งนำไปสู่ปัญหาการติดตั้ง joomla ดังนั้นการรวม mcrypt เข้ากับฉันด้วย
tagMacher

6

php5-Mcryptแพคเกจติดตั้งอูบุนตูไฟล์ config mcrypt.iniลงไป/etc/php5/conf.d/ซึ่งเป็นรูปแบบการตั้งค่าไดเรกทอรี PHP เก่า

วิธีการทำงานในปัจจุบันเพื่อเปิดใช้งานโมดูลใน PHP5 คือการวางไฟล์ ini ใน/etc/php5/mods-availableไดเรกทอรี จากนั้นเพื่อเปิดใช้งานโมดูลใน PHP5 คุณจะต้องสร้างลิงก์สัญลักษณ์ไปยังไฟล์ ini ที่เกี่ยวข้องจาก/etc/php5/apache2/conf.dไดเรกทอรีเพื่อเปิดใช้งานโมดูลเมื่อใช้ PHP ภายใต้ Apache หรือ / และ/etc/php5/cli/conf.dถ้าคุณต้องการเปิดใช้งานโมดูลนี้เมื่อคุณใช้ PHP ภายนอก Apache ในสคริปต์ทำงานที่บรรทัดคำสั่งหรือจาก crontab

นอกจากนี้โปรดทราบว่าในconf.dไดเรกทอรีคุณสามารถสร้างลิงก์ไปยังไฟล์ ini โดยใส่ตัวเลขไว้ด้านหน้าเพื่อให้โมดูลโหลดในลำดับที่เฉพาะเจาะจง มีประโยชน์เมื่อคุณต้องการโหลดโมดูลขึ้นอยู่กับโมดูลอื่น

แน่นอนว่าอย่าลืมรีสตาร์ท Apache หากคุณเปิดใช้งานโมดูลสำหรับ Apache:

 sudo service apache2 restart

4

จำเป็นต้องติดตั้งเซิร์ฟเวอร์ 14.04 ของฉันเท่านั้น (หลังจากติดตั้ง php5-mcrypt)

sudo php5enmod mcrypt
sudo service apache2 restart

3

หากปัญหายังคงเกิดขึ้น

เปิดใช้งานโมดูลโดยเพิ่ม: extension=mcrypt.soไปที่

/etc/php5/cli/php.ini

และ

/etc/php5/apache2/php.ini


1
สำหรับฉันเพิ่ม 'extension = mcrypt.so' ทำงานหลังจากติดตั้ง mcrypt Lubuntu 14.04 Trusty Thar
Clain Dsilva

วิธีนี้ใช้งานได้และเป็นวิธีที่ง่ายกว่าดังนั้นคำตอบที่ยอมรับ ... ซึ่งจะแตกเมื่ออัปเดต
Eric

ฉันทำตามทุกคำสั่งที่นี่และที่อื่น ๆ แต่ไร้ประโยชน์ ubuntu 14.04.3 - PHP 5.5.9-1ubuntu4.14 - nginx / 1.8.1 - รุ่นเซิร์ฟเวอร์: 5.7.10 - MySQL - เวอร์ชันไคลเอนต์ฐานข้อมูล: libmysql - 5.5.47 - phpMyAdmin เวอร์ชัน: 4.0.10deb1 .... ใครมีความคิด?
Jadeye

2

ใน Ubuntu 16.04 LTS เพื่อเปิดใช้งานโมดูล mcrypt ด้วย php 5.6:

sudo apt-get install mcrypt
sudo apt-get install php5.6-mcrypt
sudo phpenmod mcrypt

หรือด้วย php 7.0:

sudo apt-get install mcrypt
sudo apt-get install php7.0-mcrypt
sudo phpenmod mcrypt

แล้ว

sudo service apache2 restart

1

ด้วย PHP 7

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
sudo /etc/init.d/apache2 restart

$ sudo phpenmod mcrypt คำเตือน: ไฟล์ mcrypt ini ไม่มีอยู่ใน /etc/php/7.1/mods-available
Yevgeniy Afanasyev

$ sudo /etc/init.d/apache2 รีสตาร์ท sudo: /etc/init.d/apache2: ไม่พบคำสั่ง
Yevgeniy Afanasyev

0

คุณควรจะสามารถติดตั้ง mcrypt extension สำหรับ PHP ได้ด้วยการรัน:

sudo apt-get install php5-mcrypt

ดีมันบอกว่ามัน (บรรทัดคำสั่ง) ติดตั้งอย่างถูกต้อง แต่ก็หายไปอย่างใดอย่างหนึ่งจากเซิร์ฟเวอร์ดังกล่าวข้างต้น
matthapkidokarate

1
@ jkt123: ฉันสังเกตเห็นว่าเมื่อคุณติดตั้งโมดูล php บางอย่างเช่น php5-mcrypt ใน Ubuntu ไฟล์ทั้งหมดจะอยู่ในนั้นหลังจากนั้น แต่โมดูลนั้นไม่ได้เปิดใช้งานในการกำหนดค่า PHP หลัก คุณต้องเปิดใช้งานด้วยตนเองเช่นอธิบายไว้ในคำตอบที่ได้รับการยอมรับ
เบอนัวต์

มันไม่ทำงานโดยไม่เพิ่ม extension = mcrypt.so ไปที่ php.ini
Eric

0

โปรดทราบว่าใน Ubuntu 14.04 php5-mcrypt อยู่ในพื้นที่เก็บข้อมูลของจักรวาลที่สามารถปิดการใช้งานได้ ในกรณีนี้เพื่อติดตั้งคุณต้องเปิดใช้ที่เก็บด้วย:

sudo add-apt-repository universe


0

นี่เป็นวิธีที่ดีที่สุดในการเพิ่ม php 5.5 mcrypt บน Ubuntu 14.04 Server

sudo apt-get install php5-mcrypt
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
sudo php5enmod mcrypt 
sudo service apache2 restart

0

@ คำตอบของ Kevsin ได้ผลสำหรับฉัน แต่ฉันต้องวิ่งmkdir -p /etc/php5/apache2/conf.d/และวิ่งด้วยตนเองsudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.iniเพื่อไปทำงาน sudo php5enmod mcryptทำงานได้ดีสำหรับ symlink แรก

หมายเหตุ: ฉันใช้ PHP5-FPM นั่นอาจจะเป็นความแตกต่าง


0

สำหรับผู้ที่พบสิ่งนี้สำหรับ Ubuntu 16.04 (โดยใช้ PHP7) นี่คือสิ่งที่ฉันทำเพื่อเปิดใช้งาน mcrypt:

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