ฉันพยายามที่จะใช้migrate
ฟังก์ชั่นในบนLaravel 4
OSX
อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้:
Laravel requires the Mcrypt PHP extension.
เท่าที่ฉันเข้าใจมันเปิดใช้งานแล้ว (ดูภาพด้านล่าง)
มีอะไรผิดปกติและฉันจะแก้ไขได้อย่างไร
ฉันพยายามที่จะใช้migrate
ฟังก์ชั่นในบนLaravel 4
OSX
อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้:
Laravel requires the Mcrypt PHP extension.
เท่าที่ฉันเข้าใจมันเปิดใช้งานแล้ว (ดูภาพด้านล่าง)
มีอะไรผิดปกติและฉันจะแก้ไขได้อย่างไร
คำตอบ:
ส่วนขยายที่เปิดใช้งานเว็บและส่วนขยายที่เปิดใช้งานบรรทัดคำสั่งอาจแตกต่างกัน เรียกใช้php -m
ในเทอร์มินัลของคุณและตรวจสอบเพื่อดูว่าmcrypt
อยู่ในรายการ หากยังไม่ได้ตรวจสอบว่าบรรทัดคำสั่งกำลังโหลดphp.ini
ไฟล์ของคุณจากการทำงานphp --ini
จาก terminal ของคุณ
ในphp.ini
ไฟล์นี้คุณสามารถเปิดใช้งานส่วนขยาย
ฉันเคยได้ยินคนใน OSX ที่ทำงานอยู่ในปัญหาเนื่องจากเทอร์มินัลชี้ไปที่ PHP ดั้งเดิมที่มาพร้อมกับ OSX คุณควรอัปเดตโปรไฟล์ทุบตีของคุณเพื่อรวมเส้นทางที่แท้จริงไปยัง PHP ของคุณ บางสิ่งเช่นนี้ (ฉันไม่ได้ใช้ OSX จริงดังนั้นนี่อาจไม่ใช่ 100%):
export PATH=/usr/local/php5/bin:$PATH
ในรุ่นก่อนหน้าของอูบุนตู (ก่อนที่จะ 14.04) เมื่อคุณเรียกมันไม่จริงติดตั้งส่วนขยายลงในsudo apt-get install php5-mcrypt
mods-available
คุณจะต้องเชื่อมโยงมัน
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
ใน Ubuntu ทุกรุ่นคุณจะต้องเปิดใช้งาน mod เมื่อติดตั้งเสร็จแล้ว php5enmod
คุณสามารถทำเช่นนั้นด้วย
sudo php5enmod mcrypt
sudo service apache2 restart
หมายเหตุ
- mcrypt PHP 7.1 ที่เลิกใช้แล้วและ 7.2 ได้ลบ mcrypt extension ทั้งหมด
- Laravel 5.1 และเอาออกในภายหลังจำเป็นต้องใช้ mcrypt
sudo apt-get install php5-mcrypt
จริง ๆ ที่ไม่ได้ติดตั้งส่วนขยายอย่างสมบูรณ์
คุณติดตั้งMAMPหรือไม่
ใช้which php
ใน terminal เพื่อดู PHP เวอร์ชันที่คุณใช้
หากไม่ใช่รุ่น PHP จาก MAMP คุณควรแก้ไขหรือเพิ่ม.bash_profile
ในไดเรกทอรีหลักของผู้ใช้นั่นคือ:cd ~
ใน.bash_profile
เพิ่มบรรทัดต่อไปนี้:
export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
แก้ไข:ขั้นแรกคุณควรใช้คำสั่งcd /Applications/MAMP/bin/php
เพื่อตรวจสอบว่าคุณใช้PHP เวอร์ชันใดจาก MAMP และแทนที่ด้วย PHP เวอร์ชันด้านบน
จากนั้นrestart
เทอร์มินัลเพื่อดูว่าคุณใช้ PHP ตัวไหนอยู่ตอนนี้
และมันควรจะทำงานตอนนี้
export PATH=/Applications/AMPPS/php-5.4/bin:$PATH
... สมมติว่าคุณกำลังยิงเพื่อ 5.4.xx มี 5.3 และ 5.5 ในนั้น
cd ~
สิ่งที่สำคัญมากคุณต้องเปิดสิ่ง.bash_profile
ที่มีอยู่ที่นั่นก็สำคัญคุณต้องปิดเทอร์มินัลของคุณและเปิดใหม่อีกครั้งเพื่อให้ตัวแปร bash ใหม่ถูกโหลด เพียงตรวจสอบให้แน่ใจว่าคุณใช้งาน php ใดเพื่อยืนยันว่าการเปลี่ยนแปลงของคุณมีผลและมีความสุข
สำหรับผู้ที่ใช้ XAMPP 1.7.3 และ Mac
which php
/usr/bin/php
ทำต่อไปที่ 3sudo nano ~/.bash_profile
(หรือsudo vim ~/.bash_profile
ถ้าคุณรู้วิธีใช้)export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
cd ~
. .bash_profile
which php
เข้าสู่ ถ้าคุณทำมันถูกต้องมันควรจะเหมือนกับเส้นทางใน # 4สาเหตุของข้อผิดพลาด mcrypt คือเนื่องจาก Mac ของคุณใช้ php ดั้งเดิมคุณต้องเปลี่ยนเป็น xampp อันเดียว
PS ฉันขอแนะนำให้ใช้ MAMP สำหรับผู้ใช้ Laravel 4 สำหรับ Mac ปัญหานี้จะได้รับการแก้ไขพร้อมกับข้อผิดพลาดข้อมูลไฟล์ php โดยไม่ต้องเหนื่อยและ xampp รุ่น php ล้าสมัยแล้ว
"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
export PATH="/opt/lampp/bin:$PATH"
สำหรับผู้ใช้ที่ไม่ใช่ MAMP หรือ XAMPP บน OSX (ที่ติดตั้ง homebrew):
brew install homebrew/php/php56-mcrypt
ไชโย!
$ brew install homebrew/php/php55-mcrypt
มิฉะนั้นจะได้รับError: No available formula with the name "php55-mcrypt"
ใช้ Ubuntu เพียง
sudo php5enmod mcrypt
ทำเคล็ดลับสำหรับฉัน คุณไม่จำเป็นต้องรีสตาร์ท Apache เนื่องจากคุณจำเป็นต้องใช้ PHP จาก CLI
ใน Ubuntu (PHP-FPM, Nginx)
sudo apt-get install php5-mcrypt
หลังจากติดตั้ง php5-mcrypt
คุณต้องสร้าง symlink ไปยังไฟล์ ini ใน mods-available:
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
เปิดใช้งาน:
sudo php5enmod mcrypt
รีสตาร์ท php5-fpm:
sudo service php5-fpm restart
sudo aptitude -y install php5-mcrypt
ตามมาด้วยและsudo php5enmod mcrypt
sudo service php5-fpm restart
(ฉันข้ามขั้นตอนการเชื่อมโยงที่อ่อนนุ่ม) มันได้ผล :)
ทำให้ Laravel ทำงานบน Apache
รุ่น PHP: PHP 5.5.9
รุ่นของ Ubuntu: 14.04
ฉันมีโครงการ laravel ที่ทำงานบน windows เมื่อฉันคัดลอกไปยังเซิร์ฟเวอร์ ubuntu ฉันเริ่มรับข้อผิดพลาด mcrypt หลังจากการลองผิดลองถูกหลายชั่วโมง
รับคำสั่งช่างฝีมือทำงาน
(หากคุณมีข้อผิดพลาด mcrypt ขณะใช้เครื่องมือบรรทัดคำสั่ง artisan)
ฉันทำการทดลองและข้อผิดพลาดเป็นจำนวนมากดังนั้นทุกครั้งที่ฉันเรียกใช้คำสั่ง php5enmod มาก่อนฉันมีข้อความแสดงข้อผิดพลาด แต่ในการติดตั้งใหม่ไม่มีข้อความผิดพลาด หลังจากขั้นตอนนี้ฉันได้รับคำสั่งช่างฝีมือทำงาน
sudo rm /etc/php5/mods-available/mcrypt.ini
sudo apt-get purge php5-mcrypt
sudo apt-get install mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
แก้ไขข้อผิดพลาดของเบราว์เซอร์
(หากคุณมีข้อผิดพลาด mcrypt ในเบราว์เซอร์เมื่อเข้าถึงหน้าดัชนี laravel ท้องถิ่น)
sudo nano /etc/php5/apache2/php.ini
เพิ่มบรรทัดต่อไปนี้ภายใต้ส่วนขยายที่รวบรวมแบบไดนามิกของ php ini
extension=mcrypt.so
รีสตาร์ทเซิร์ฟเวอร์ apache ล้างแคช laravel และทุกอย่างทำงานได้
docker-php-ext-install mcrypt
ด้วย ทดสอบกับภาพ: php:5.6.31-apache
. โดยไม่ต้องที่จะไม่แสดงphp -m
mcrypt
สำหรับการติดตั้ง php-fpm บน Ubuntu 14.04 สิ่งต่อไปนี้ใช้ได้สำหรับฉัน:
sudo apt-get install php5-mcrypt
จะเป็นการสร้างmcrypt.ini
ไฟล์ภายใน/etc/php5/mods-available/
แล้วก็
sudo php5enmod mcrypt
จะสร้าง symlink ใน: /etc/php5/fpm/conf.d/
เพียงเริ่มบริการ php-fpm
sudo service php5-fpm restart
สำหรับอูบุนตูให้ลองขั้นตอนเหล่านี้ถ้าคนอื่นไม่ทำงาน:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
หวังว่าจะช่วยได้ ขอบคุณมาก!
หรือใช้:
sudo apt-get install php5-mcrypt
ไม่แน่ใจว่าจะใช้งานได้กับการติดตั้ง PHP มาตรฐานหรือไม่ - ฉันติดตั้งphp 5.5.7
โดยใช้แพ็คเกจจาก:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
OS Yosemite
ของฉันคือ
ฉันแก้ไขปัญหานี้โดยการค้นหาเส้นทางการกำหนดค่า:
php --ini
ตัวอย่างผลลัพธ์:
Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File: /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed: (none)
ขั้นตอนถัดไป:
คำสั่ง:
mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default
ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini
sudo apachectl restart
จากนั้นคุณสามารถตรวจสอบโมดูล php ของคุณผ่าน:
php -m
เพียงเพื่อ yumers
yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
บางทีคุณอาจต้องติดตั้งrepi repo
วิธีนี้แก้ไขได้สำหรับฉันบนสภาพแวดล้อม Linux Mint ในท้องถิ่นของฉัน/ubuntu/350942/cannot-get-mcrypt-for-php5
ฉันต้องการสร้าง symlink ไปยังไฟล์ /etc/php5/conf.d/mcrypt.ini ในโฟลเดอร์ /etc/php5/apache2/conf.d/mcrypt.ini และ /etc/php5/cli/conf.d /mcrypt.ini
คุณต้องการสภาพแวดล้อมทั้งหมดในที่เดียว คุณสามารถใช้ MAMP หรือ XAMPP หรือเครื่องมืออื่น ๆ หลังจากติดตั้งหนึ่งในเครื่องมือเหล่านี้คุณจะต้องแก้ไข (สร้าง). bash_profile (สมมติว่าคุณใช้ bash)
หรือแม้แต่มืออาชีพที่เรียบง่ายและมากขึ้นคุณสามารถใช้ Laravel Homestead ได้
นี่คือลิงค์ไปสู่เอกสารอย่างเป็นทางการ: http://laravel.com/docs/5.0/homestead
เจฟฟรีย์ยังมีบทช่วยสอนฟรีเกี่ยวกับมัน: https://laracasts.com/series/laravel-5-fundamentals/episodes/2
ฉันแนะนำให้คุณไปกับไร่เพราะคุณจะติดตั้งเครื่องมือทั้งหมดต่อไปนี้ล่วงหน้า
การขยายบน @JetLaggy:
หลังจากลองอีกครั้งและอีกครั้งเพื่อแก้ไข. bash_profile ด้วยไดเรกทอรี MAMP ฉันเปลี่ยนสิทธิ์ของไฟล์สำหรับไดเรกทอรี MAMP php และสามารถรับ 'ซึ่ง php' เพื่อแสดงไดเรกทอรีที่เหมาะสม ปัญหาคือฟังก์ชั่นอื่น ๆ ใช้งานไม่ได้เช่น 'php -v'
ดังนั้นฉันจึงอัพเดท MAMP http://documentation.mamp.info/en/mamp/installation/updating-mamp
นี่เป็นเคล็ดลับสำหรับการตั้งค่าเฉพาะของฉัน ฉันต้องปรับ PATH ของฉันเพื่อให้สอดคล้องกับ PHP เวอร์ชันที่อัปเดต แต่เมื่อฉันทำแล้วทุกอย่างทำงานได้!
ป้อนคำสั่ง which php
ในเทอร์มินัลเพื่อดูว่าคุณใช้ PHP เวอร์ชันใด หากไม่ใช่เวอร์ชัน PHP จาก MAMP ตัวแปร $ PATH ที่ใช้โดย Bash จะต้องได้รับการอัปเดต
ก่อนอื่นคุณควรใช้คำสั่ง "cd / Applications / MAMP / bin / php" เพื่อตรวจสอบ php version จาก MAMP และจดบันทึกเวอร์ชัน (เช่น php5.6.7)
เมื่อคุณทราบเวอร์ชันแล้วคุณควรแก้ไข~/.bash_profile
ไฟล์ (นั่นคือไฟล์.bash_profile
นั้นอยู่ในโฮมไดเร็กตอรี่ของคุณ) และเพิ่มบรรทัดการส่งออก:
export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH
ตรวจสอบให้แน่ใจว่าคุณแทนที่ php5.6.7 ด้วยเวอร์ชันของ PHP ที่คุณเลือกใน MAMP
เมื่อบันทึกไฟล์แล้วให้ตรวจสอบให้แน่ใจว่าคุณปิดปิดเทอร์มินัลแล้วเปิดอีกครั้ง เมื่อทำเสร็จแล้วคุณจะใช้ PHP ที่มาพร้อมกับ MAMP
วิธีหนึ่งในการค้นหาสิ่งที่บรรทัดควรเป็นอย่างง่ายซึ่งคุณต้องใส่ไว้ใน.bash_profile
นั้นคือการเรียกใช้คำสั่งต่อไปนี้ภายในเทอร์มินัลของคุณ:
echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
| grep php | grep -i LoadModule | head -n1 \
| sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH
การคัดลอกและวางทั้งสามบรรทัดลงในเทอร์มินัลของคุณจะส่งออกเวอร์ชัน PHP ที่เลือกไว้ในแผงควบคุม MAMP อย่างถูกต้อง
ตรวจสอบให้แน่ใจว่าคุณpath
มี/usr/local/bin/
(Homebrew) หรือ/opt/local/bin
(MacPort) ของคุณหากคุณใช้ PHP ที่มาพร้อมกับตัวจัดการแพคเกจอย่างใดอย่างหนึ่งเหล่านี้
คุณสามารถค้นหาตำแหน่งที่แน่นอนของ PHP โดยใช้ MacPorts ด้วยคำสั่งต่อไปนี้:
port contents php70 | grep bin/php
โปรดทราบว่าคุณควรแทนที่ php70
ด้วย PHP เวอร์ชันที่คุณติดตั้ง
Homebrew-php ( https://github.com/Homebrew/homebrew-php ) คือการแตะที่มี PHP เวอร์ชันที่แตกต่างหลากหลาย
คุณสามารถค้นหาตำแหน่งที่แน่นอนของ PHP โดยใช้ Homebrew ด้วยคำสั่งต่อไปนี้:
brew --prefix homebrew/php/php56
โปรดทราบว่าคุณควรแทนที่php56
ด้วย PHP เวอร์ชันที่คุณติดตั้ง
ใน Ubuntu 14.04
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
Ubuntu 16.04
sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
Ubuntu 18.04
sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt
หรือ
sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt
หากคุณใช้ Z Shell เพียงทำต่อไปนี้:
nano ~/.zshrc
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
source ~/.zshrc
which php
- คุณควรได้รับเส้นทาง MAMP 5.6.105.6.10 เป็นเวอร์ชันของ PHP ที่คุณตั้งไว้ใน MAMP ของคุณ
$ brew install mcrypt php70-mcrypt
ฉันใช้ PHP 7.0.x ดังนั้นเปลี่ยน "php70" เป็นเวอร์ชั่นของคุณหากคุณใช้เวอร์ชั่นอื่น
ตามที่ระบุไว้ในคำตอบอื่น ๆ ที่คุณสามารถดู php $ php -v
รุ่นของคุณด้วย
Laravel ไม่จำเป็นต้องmcrypt
ขยายอีกต่อไป mcrypt
ล้าสมัยการอัพเดตล่าสุดของ libmcrypt คือในปี 2550 Laravel 4.2 ล้าสมัยเกินไปและไม่มีการสนับสนุนเพิ่มเติม ทางออกที่ดีที่สุด (= ปลอดภัย) คือการอัปเดตเป็น Laravel> 5.1 (ไม่มี LTS ก่อน Laravel 5.2)
Mcrypt ถูกลบออกจาก Laravel ในเดือนมิถุนายน 2558: https://github.com/laravel/framework/pull/9041
sudo php ติดตั้ง mcrypt
sudo php5enmod mcrypt
mcrypt
คุณสามารถขยายว่าทำไมคุณถึงเชื่อว่าสิ่งนี้จะแก้ไขปัญหาของ OP ได้หรือไม่?
ใน Ubuntu 14.04 ขึ้นอยู่กับรุ่น php ของคุณ: 5.6,7.0,7.1,7.2,7.3
sudo apt-get php {version} -mcrypt
sudo apt-get install php7.1-mcrypt
sudo phpenmod mcrypt