Próbuję użyć migrate funkcji Laravel 4na 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 4na 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 -mterminal i sprawdź, czy mcryptjest na liście. Jeśli nie, sprawdź, skąd wiersz poleceń ładuje php.iniplik, uruchamiając go php --iniz terminala.
W tym php.inipliku 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-mcryptnie 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-mcrypttak naprawdę nie instaluje rozszerzenia w pełni.
Czy masz zainstalowany MAMP ?
Użyj which phpw terminalu, aby zobaczyć, której wersji PHP używasz.
Jeśli nie jest to wersja PHP z MAMP, powinieneś edytować lub dodać .bash_profiledo katalogu domowego użytkownika, to znaczy:cd ~
W .bash_profiledodaj 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/phpaby sprawdzić, której wersji PHP z MAMP używasz, a następnie zastąpić ją wersją PHP powyżej.
Następnie restartterminal, 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_profileco 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_profilejeśli wiesz, jak go używać)export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"cd ~. .bash_profilewhich 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-mcryptinaczejError: 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 mcrypti 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 -mnie 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.inipliku 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-mcryptsudo apt-get install php5-mcryptsudo php5enmod mcryptsudo service apache2 restartMam 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 phpw 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_profileplik (czyli ten, .bash_profilektó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_profilejest 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 pathzawiera /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ć php70zainstalowaną 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ć php56zainstalowaną 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 ~/.zshrcexport PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATHsource ~/.zshrcwhich 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 mcryptjuż rozszerzenia . mcryptjest 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
mcryptCzy 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