Próbuję użyć migrate
funkcji Laravel 4
na OSX
. Jednak pojawia się następujący błąd:
Laravel requires the Mcrypt PHP extension.
O ile rozumiem, jest już włączony (patrz obrazek poniżej).
Co jest nie tak i jak mogę to naprawić?
Próbuję użyć migrate
funkcji Laravel 4
na OSX
. Jednak pojawia się następujący błąd:
Laravel requires the Mcrypt PHP extension.
O ile rozumiem, jest już włączony (patrz obrazek poniżej).
Co jest nie tak i jak mogę to naprawić?
Odpowiedzi:
Rozszerzenia z obsługą sieci i rozszerzenia z obsługą wiersza poleceń mogą się różnić. Uruchom php -m
terminal i sprawdź, czy mcrypt
jest na liście. Jeśli nie, sprawdź, skąd wiersz poleceń ładuje php.ini
plik, uruchamiając go php --ini
z terminala.
W tym php.ini
pliku możesz włączyć rozszerzenie.
Słyszałem o ludziach z OSX, które mają problemy z terminalem wskazującym na natywnego PHP dostarczanego z OSX. Zamiast tego powinieneś zaktualizować swój profil bash, aby zawierał rzeczywistą ścieżkę do twojego PHP. Coś w tym stylu (tak naprawdę nie używam OSX, więc może to nie być 100%):
export PATH=/usr/local/php5/bin:$PATH
We wcześniejszych wersjach Ubuntu (przed 14.04) po uruchomieniu sudo apt-get install php5-mcrypt
nie instaluje ono rozszerzenia w mods-available
. Musisz to dowiązać symbolicznie.
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
We wszystkich wersjach Ubuntu musisz włączyć mod po jego zainstalowaniu. Możesz to zrobić za pomocą php5enmod
.
sudo php5enmod mcrypt
sudo service apache2 restart
UWAGI
- Nieaktualne mcrypt w PHP 7.1 i 7.2 całkowicie usunęło rozszerzenie mcrypt
- Laravel 5.1 i późniejszy usunął potrzebę mcrypt
sudo apt-get install php5-mcrypt
tak naprawdę nie instaluje rozszerzenia w pełni.
Czy masz zainstalowany MAMP ?
Użyj which php
w terminalu, aby zobaczyć, której wersji PHP używasz.
Jeśli nie jest to wersja PHP z MAMP, powinieneś edytować lub dodać .bash_profile
do katalogu domowego użytkownika, to znaczy:cd ~
W .bash_profile
dodaj następujący wiersz:
export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
Edytowane: Najpierw powinieneś użyć polecenia, cd /Applications/MAMP/bin/php
aby sprawdzić, której wersji PHP z MAMP używasz, a następnie zastąpić ją wersją PHP powyżej.
Następnie restart
terminal, aby zobaczyć, którego PHP używasz teraz.
I powinno już działać.
export PATH=/Applications/AMPPS/php-5.4/bin:$PATH
... zakładając, że strzelasz do wersji 5.4.xx, są tam również 5.3 i 5.5.
cd ~
jest to bardzo ważne, musisz otworzyć to, .bash_profile
co tam jest, TAKŻE ważne jest, aby zamknąć terminal i otworzyć ponownie, aby załadować nowe zmienne bash. Po prostu upewnij się, aby uruchomić php, aby sprawdzić, czy zmiana została zastosowana, szczęśliwego kodowania!
Do tych, którzy używają XAMPP 1.7.3 i Mac
which php
/usr/bin/php
, przejdź do 3.sudo nano ~/.bash_profile
(lub sudo vim ~/.bash_profile
jeśli wiesz, jak go używać)export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
cd ~
. .bash_profile
which php
. Jeśli zrobiłeś to dobrze, powinien być taki sam jak ścieżka w # 4.Przyczyną błędu mcrypt jest to, że twój Mac używa natywnego php, musisz zmienić go na ten, który ma xampp.
PS Polecam używanie MAMP dla Laravel 4 dla użytkowników komputerów Mac, problem ten zostanie rozwiązany wraz z błędem informacji o pliku php bez wysiłku, a wersja php xampp jest tak przestarzała.
"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
export PATH="/opt/lampp/bin:$PATH"
Dla użytkowników innych niż MAMP lub XAMPP na OSX (z zainstalowanym homebrew):
brew install homebrew/php/php56-mcrypt
Twoje zdrowie!
$ brew install homebrew/php/php55-mcrypt
inaczejError: No available formula with the name "php55-mcrypt"
W Ubuntu (PHP-FPM, Nginx)
sudo apt-get install php5-mcrypt
Po zainstalowaniu php5-mcrypt
musisz utworzyć dowiązanie symboliczne do plików ini w dostępnych modach:
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
włączyć:
sudo php5enmod mcrypt
uruchom ponownie php5-fpm:
sudo service php5-fpm restart
sudo aptitude -y install php5-mcrypt
, a następnie sudo php5enmod mcrypt
i sudo service php5-fpm restart
. (Pominąłem krok miękkiego linkowania). Udało się :)
Nakłonienie Laravela do pracy nad Apache
Wersja PHP: PHP 5.5.9
Wersja Ubuntu: 14.04
Miałem działający projekt Laravela na Windowsie. kiedy skopiowałem go na serwer Ubuntu, zacząłem otrzymywać błąd mcrypt. to po wielu godzinach prób i błędów
uruchomienie pracy rzemieślnika
(jeśli masz błąd mcrypt podczas korzystania z narzędzia wiersza polecenia rzemieślnika)
Zrobiłem wiele prób i błędów, więc za każdym razem, gdy uruchamiam komendę php5enmod, miałem komunikaty o błędach. ale przy świeżej instalacji nie było komunikatów o błędach. po tym kroku uruchomiłem polecenie rzemieślnika
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
naprawianie błędu przeglądarki
(jeśli masz błąd mcrypt w przeglądarce podczas uzyskiwania dostępu do lokalnej strony indeksu laravel)
sudo nano /etc/php5/apache2/php.ini
dodaj następujący wiersz pod dynamicznie skompilowaną sekcją rozszerzeń php ini
extension=mcrypt.so
zrestartuj serwer Apache, wyczyść pamięć podręczną laravel i wszystko działa
docker-php-ext-install mcrypt
. Testowane na obrazek: php:5.6.31-apache
. Bez tego php -m
nie pokazuje mcrypt
.
W przypadku instalacji php-fpm na Ubuntu 14.04 działały dla mnie:
sudo apt-get install php5-mcrypt
Spowoduje to utworzenie mcrypt.ini
pliku w środku/etc/php5/mods-available/
Następnie
sudo php5enmod mcrypt
utworzy dowiązanie symboliczne w: /etc/php5/fpm/conf.d/
Po prostu uruchom ponownie usługi php-fpm
sudo service php5-fpm restart
W przypadku Ubuntu wypróbuj następujące kroki, jeśli inni nie działają:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
Mam nadzieję, że to pomoże. Dzięki !
Mój system operacyjny to Yosemite
.
Rozwiązuję ten problem, znajdując ścieżki konfiguracji:
php --ini
Przykładowe dane wyjściowe:
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)
Następne kroki:
Polecenia:
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
Następnie możesz sprawdzić swoje moduły php poprzez:
php -m
Rozwiązało to dla mnie na moim lokalnym środowisku Linux Mint /ubuntu/350942/cannot-get-mcrypt-for-php5
Musiałem utworzyć dowiązanie symboliczne do mojego pliku /etc/php5/conf.d/mcrypt.ini w następujących folderach /etc/php5/apache2/conf.d/mcrypt.ini i /etc/php5/cli/conf.d /mcrypt.ini
Potrzebujesz wszystko w jednym środowisku. Możesz użyć MAMP lub XAMPP lub dowolnego innego narzędzia. Po zainstalowaniu jednego z tych narzędzi będziesz musiał edytować (utworzyć) plik .bash_profile (zakładając, że używasz bash).
Lub nawet prosty i bardziej profesjonalny możesz użyć Laravel Homestead.
Oto link do oficjalnej dokumentacji: http://laravel.com/docs/5.0/homestead
Jeffrey ma również darmowy samouczek na ten temat: https://laracasts.com/series/laravel-5-fundamentals/episodes/2
Radzę iść z homestead, ponieważ wstępnie zainstalujesz wszystkie następujące narzędzia.
Rozwijanie w @JetLaggy:
Po ponownych próbach modyfikacji pliku .bash_profile w katalogu MAMP zmieniłem uprawnienia do pliku w katalogu MAMP php i udało mi się uzyskać „który php”, aby wyświetlić właściwy katalog. Problem polegał na tym, że inne funkcje nie działały, takie jak „php -v”.
Więc zaktualizowałem MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp
To załatwiło sprawę dla mojej konkretnej konfiguracji. Musiałem dostosować ŚCIEŻKĘ, aby odzwierciedlała zaktualizowaną wersję PHP, ale kiedy to zrobiłem, wszystko działało!
Wpisz polecenie which php
w terminalu, aby zobaczyć, której wersji PHP używasz. Jeśli nie jest to wersja PHP z MAMP, zmienna $ PATH używana przez Bash będzie musiała zostać zaktualizowana.
Najpierw powinieneś użyć polecenia „cd / Applications / MAMP / bin / php”, aby sprawdzić, która wersja php z MAMP i zanotować wersję (np. Php5.6.7).
Po poznaniu wersji należy edytować ~/.bash_profile
plik (czyli ten, .bash_profile
który znajduje się w katalogu domowym) i dodać wiersz eksportu:
export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH
Upewnij się, że zastąpiłeś php5.6.7 wersją PHP, którą wybrałeś w MAMP.
Po zapisaniu pliku upewnij się, że zamknąłeś terminal i otworzyłeś go ponownie. Gdy to zrobisz, będziesz używać PHP dostarczanego z MAMP.
Jednym ze sposobów, aby łatwo znaleźć linię, którą należy umieścić w swoim, .bash_profile
jest uruchomienie następującej komendy w terminalu:
echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
| grep php | grep -i LoadModule | head -n1 \
| sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH
Skopiowanie i wklejenie tych trzech wierszy do terminala spowoduje prawidłowe wydrukowanie wersji PHP wybranej w panelu sterowania MAMP.
Upewnij się, że path
zawiera /usr/local/bin/
(Homebrew) lub /opt/local/bin
(MacPorts), jeśli używasz PHP dostarczanego z jednym z tych dwóch menedżerów pakietów.
Dokładną lokalizację PHP można znaleźć za pomocą MacPorts za pomocą następującego polecenia:
port contents php70 | grep bin/php
Pamiętaj, że powinieneś zastąpić php70
zainstalowaną wersją PHP.
Homebrew-php ( https://github.com/Homebrew/homebrew-php ) to kran, który ma różne wersje PHP.
Możesz znaleźć dokładną lokalizację PHP za pomocą Homebrew za pomocą następującego polecenia:
brew --prefix homebrew/php/php56
Pamiętaj, że powinieneś zastąpić php56
zainstalowaną wersją PHP.
w 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
lub
sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt
Jeśli używasz Z Shell, wykonaj następujące czynności:
nano ~/.zshrc
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
source ~/.zshrc
which php
- powinieneś pobrać ścieżkę MAMP 5.6.105.6.10 to wersja PHP, którą ustawiłeś w swoim MAMP-ie.
Laravel nie potrzebuje mcrypt
już rozszerzenia . mcrypt
jest przestarzały, ostatnia aktualizacja libmcrypt miała miejsce w 2007 roku. Laravel 4.2 jest również przestarzały i nie ma już wsparcia. Najlepszym (= bezpiecznym) rozwiązaniem jest aktualizacja do Laravel> 5.1 (przed Laravel 5.2 nie ma LTS).
Mcrypt został usunięty z Laravel w czerwcu 2015 r .: https://github.com/laravel/framework/pull/9041
sudo php zainstaluj mcrypt
sudo php5enmod mcrypt
mcrypt
Czy możesz wyjaśnić, dlaczego uważasz, że to rozwiąże problem OP?
w Ubuntu 14.04 w oparciu o twoją wersję php: 5.6,7.0,7.1,7.2,7.3
sudo apt-get install php {wersja} -mcrypt
sudo apt-get install php7.1-mcrypt
sudo phpenmod mcrypt