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.
OSX
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
Ubuntu
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.
to działało dla mnie na Ubuntu, dzięki! Dziwne, że sudo apt-get install php5-mcrypttak naprawdę nie instaluje rozszerzenia w pełni.
Aristides
Ubuntu 13.10 - Musiałem także zainstalować sam mcrypt
Ondrej Galbavý
1
Najwyraźniej zainstalował już mcrypt ini w dostępnych modach, po prostu nie wiedziałem o komendzie php5enmod. Korzystanie z tego sprawia, że działa jak urok. Dzięki!
imkingdavid
Więc tylko na tym, mam mcrypt na liście, kiedy idę php -m, kiedy idę, który to php mówi / usr / local / bin / php. Próbowałem zainstalować mcrypt z zaparzeniem i wydawało się, że zadziałało. Ale Laravel nadal twierdzi, że wymagane jest rozszerzenie Mcrypt PHP.
Marais Rossouw,
1
Podobnie jak @imkingdavid, również nie wymagałem dowiązania symbolicznego. php5enmod było wystarczające. Ubuntu 14.04 LTS
Brett
340
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 ~
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.
oczywiście nie potrzebujesz MAMP, aby zdobyć Mcrypt. ta odpowiedź jest tylko dla osób, które mają wiele wersji PHP zainstalowanych na swoim komputerze, powiedzmy XAMPP lub MAMP, lub inne.
JustinHo,
Podobnie dla użytkowników AMPPS: 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.
Joel Mellon,
6
Każdy nie korzysta z MAMP, masz odpowiedź dla reszty ludzi?
TuGordoBello,
2
Pomyślałem, że wskazałem, że 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!
przewodowy00
142
Do tych, którzy używają XAMPP 1.7.3 i Mac
Idź do terminalu
Wchodzić which php
Jeśli to powie /usr/bin/php, przejdź do 3.
Wpisz sudo nano ~/.bash_profile(lub sudo vim ~/.bash_profilejeśli wiesz, jak go używać)
Następnie wklej to export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
Ctrl+Onastępnie wprowadź, aby zapisać, a następnie, Ctrl+Xaby wyjść.
Rodzaj cd ~
rodzaj . .bash_profile
uruchom ponownie terminal.
Enter 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.
Martwiłem się, że to nie zadziała z natywnym OSX PHP, ale właśnie to zainstalowałem i nie musiałem się bawić z moją PATH ani nic takiego. Po prostu działa. Niezłe.
Lauren
3
Byłoby wspaniale, gdyby ta odpowiedź została dołączona do wiodących odpowiedzi w tym wątku, aby uczynić ją bardziej wszechstronnym zasobem. Dzięki za szybką radę, jak wspomniała Lauren, to naprawdę naprawia problem.
Bryan Rayner,
4
Tak naprawdę jest $ brew install homebrew/php/php55-mcryptinaczejError: No available formula with the name "php55-mcrypt"
Connor Leech
47
Tylko z Ubuntu
sudo php5enmod mcrypt
zrobił dla mnie lewę. Nie musisz restartować Apache, ponieważ musisz używać PHP tylko z poziomu CLI.
Pobiegłem 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ę :)
Aditya, poseł
26
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
Jeśli pracujesz nad obrazem dokera php , musisz również uruchomić docker-php-ext-install mcrypt. Testowane na obrazek: php:5.6.31-apache. Bez tego php -mnie pokazuje mcrypt.
Ewa
19
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/
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.
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”.
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:
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.
Korzystanie z Homebrew / MacPorts
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.
Sprawdzanie ścieżki PHP za pomocą MacPorts
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.
Korzystam z PHP 7.0.x, więc zmień „php70” na swoją wersję, jeśli używasz innej wersji.
Jak stwierdzono w innych odpowiedziach, możesz zobaczyć swoją wersję php za pomocą $ php -v.
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).
Chociaż technicznie Twój komentarz może być prawdziwy, staramy się zamieścić wyjaśnienie twoich odpowiedzi tutaj na StackOverflow. Ponadto wygląda na to, że OP jest już zainstalowany. mcryptCzy możesz wyjaśnić, dlaczego uważasz, że to rozwiąże problem OP?
milo526,
0
w Ubuntu 14.04 w oparciu o twoją wersję php: 5.6,7.0,7.1,7.2,7.3
Odpowiedzi:
Rozszerzenia z obsługą sieci i rozszerzenia z obsługą wiersza poleceń mogą się różnić. Uruchom
php -m
terminal i sprawdź, czymcrypt
jest na liście. Jeśli nie, sprawdź, skąd wiersz poleceń ładujephp.ini
plik, uruchamiając gophp --ini
z terminala.W tym
php.ini
pliku możesz włączyć rozszerzenie.OSX
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%):
Ubuntu
We wcześniejszych wersjach Ubuntu (przed 14.04) po uruchomieniu
sudo apt-get install php5-mcrypt
nie instaluje ono rozszerzenia wmods-available
. Musisz to dowiązać symbolicznie.We wszystkich wersjach Ubuntu musisz włączyć mod po jego zainstalowaniu. Możesz to zrobić za pomocą
php5enmod
.źródło
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: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ć.
źródło
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
(lubsudo 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.
źródło
"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!
źródło
$ brew install homebrew/php/php55-mcrypt
inaczejError: No available formula with the name "php55-mcrypt"
Tylko z Ubuntu
zrobił dla mnie lewę. Nie musisz restartować Apache, ponieważ musisz używać PHP tylko z poziomu CLI.
źródło
W Ubuntu (PHP-FPM, Nginx)
Po zainstalowaniu php5-mcrypt
musisz utworzyć dowiązanie symboliczne do plików ini w dostępnych modach:
włączyć:
uruchom ponownie php5-fpm:
Więcej szczegółów
źródło
sudo aptitude -y install php5-mcrypt
, a następniesudo php5enmod mcrypt
isudo 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
naprawianie błędu przeglądarki
(jeśli masz błąd mcrypt w przeglądarce podczas uzyskiwania dostępu do lokalnej strony indeksu laravel)
dodaj następujący wiersz pod dynamicznie skompilowaną sekcją rozszerzeń php ini
zrestartuj serwer Apache, wyczyść pamięć podręczną laravel i wszystko działa
źródło
docker-php-ext-install mcrypt
. Testowane na obrazek:php:5.6.31-apache
. Bez tegophp -m
nie pokazujemcrypt
.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
źródło
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 !
źródło
Albo użyj:
nie jestem pewien, czy to zadziała na standardowych instalacjach PHP - zainstalowałem
php 5.5.7
używając pakietu z:źródło
Mój system operacyjny to
Yosemite
.Rozwiązuję ten problem, znajdując ścieżki konfiguracji:
Przykładowe dane wyjściowe:
Następne kroki:
Polecenia:
Następnie możesz sprawdzić swoje moduły php poprzez:
źródło
Tylko dla mniszek
Może potrzebujesz zainstalować remo repo
źródło
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
źródło
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.
źródło
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!
źródło
W systemie OS X
Korzystanie z MAMP
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: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:Skopiowanie i wklejenie tych trzech wierszy do terminala spowoduje prawidłowe wydrukowanie wersji PHP wybranej w panelu sterowania MAMP.
Korzystanie z Homebrew / MacPorts
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.Sprawdzanie ścieżki PHP za pomocą MacPorts
Dokładną lokalizację PHP można znaleźć za pomocą MacPorts za pomocą następującego polecenia:
Pamiętaj, że powinieneś zastąpić
php70
zainstalowaną wersją PHP.Sprawdź ścieżkę PHP za pomocą Homebrew-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:
Pamiętaj, że powinieneś zastąpić
php56
zainstalowaną wersją PHP.źródło
w Ubuntu 14.04
Ubuntu 16.04
Ubuntu 18.04
lub
źródło
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.
źródło
OSX z naparem
Korzystam z PHP 7.0.x, więc zmień „php70” na swoją wersję, jeśli używasz innej wersji.
Jak stwierdzono w innych odpowiedziach, możesz zobaczyć swoją wersję php za pomocą
$ php -v
.źródło
Dla tych, którzy nadal tu przyjeżdżają:
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
źródło
źródło
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
źródło