Я намагаюся використовувати 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
з вашого терміналу.
У цьому php.ini
файлі ви можете включити розширення.
Я чув, що люди на OSX стикаються з проблемами через термінал, що вказує на рідну PHP, що постачається з OSX. Натомість слід оновити свій bash-профіль, щоб включити фактичний шлях до PHP. Щось подібне (я фактично не використовую OSX, тому це може бути не 100%):
export PATH=/usr/local/php5/bin:$PATH
У попередніх версіях Ubuntu (до 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 вам потрібно буде включити мод після його встановлення. Ви можете це зробити за допомогою php5enmod
.
sudo php5enmod mcrypt
sudo service apache2 restart
ПРИМІТКИ
- Знищений mcrypt PHP 7.1 і 7.2 повністю видалили розширення mcrypt
- Laravel 5.1 і пізніше усунув потребу в mcrypt
sudo apt-get install php5-mcrypt
насправді розширення не встановлено повністю.
У вас встановлений MAMP ?
Використовуйте which php
в терміналі, щоб побачити, яку версію 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
, тоді переходимо до 3.sudo 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 без потужності, а версія php xampp настільки застаріла.
"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
export PATH="/opt/lampp/bin:$PATH"
Для користувачів, які не є MAMP або XAMPP на OSX (із встановленою домашньою мовою):
brew install homebrew/php/php56-mcrypt
Ура!
$ brew install homebrew/php/php55-mcrypt
, інакше отриманоError: No available formula with the name "php55-mcrypt"
У Ubuntu (PHP-FPM, Nginx)
sudo apt-get install php5-mcrypt
Після установки php5-mcrypt
Ви повинні зробити симпосилання на ini-файли у доступних модах:
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
створить посилання на: /etc/php5/fpm/conf.d/
Просто перезапустіть сервіси php-fpm
sudo service php5-fpm restart
Для ubuntu спробуйте виконати наступні дії, якщо інші не працюють:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
Сподіваюся, що це допоможе. Дякую !
Моя ОС є 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
Це вирішило це для мене на локальному оточенні Linux Mint /ubuntu/350942/cannot-get-mcrypt-for-php5
Мені потрібно було зробити посилання на мій файл /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/uk/mamp/installation/updating-mamp
Це зробило трюк для моєї конкретної установки. Мені довелося налаштувати свій PATH для відображення оновленої версії PHP, але як тільки я це зробив, все працювало!
Введіть команду which php
в термінал, щоб побачити, яку версію PHP ви використовуєте. Якщо це не версія PHP від MAMP, змінну $ PATH, яку використовує Bash, потрібно буде оновити.
Спочатку слід скористатися командою "cd / Applications / MAMP / bin / php", щоб перевірити, яка версія PHP від 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
(MacPorts), якщо ви використовуєте 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.
Laravel більше не потребує mcrypt
розширення . mcrypt
застаріло, останнє оновлення до libmcrypt було в 2007 році. Laravel 4.2 теж застарілий і більше не підтримує. Найкращим рішенням (= безпечне) є оновлення до Laravel> 5.1 (до Laravel 5.2 немає LTS).
Макріпта було видалено з Laravel у червні 2015 року: https://github.com/laravel/framework/pull/9041
sudo php встановити mcrypt
sudo php5enmod mcrypt
mcrypt
, чи можете ви розширити питання, чому ви вважаєте, що це вирішить проблему ОП?
в ubuntu 14.04 на основі вашої версії php: 5.6,7.0,7.1,7.2,7.3
sudo apt-get install php {версія} -mcrypt
sudo apt-get install php7.1-mcrypt
sudo phpenmod mcrypt