migrate
のLaravel 4
でOSX
関数を使用しようとしています。ただし、次のようなエラーが表示されます。
Laravel requires the Mcrypt PHP extension.
私が理解している限りでは、これはすでに有効になっています(下の画像を参照)。
何が問題なのですか。また、どうすれば解決できますか?
Web対応拡張とコマンドライン対応拡張は異なる場合があります。端末でphp -m
を実行し、mcrypt
がリストされているかどうかを確認してください。そうでない場合は、端末からphp.ini
を実行して、コマンドラインがphp --ini
ファイルのロード元を確認します。
このphp.ini
ファイルでは、拡張機能を有効にすることができます。
OSXに同梱されているネイティブPHPを端末が指しているために、OSX上の人々が問題にぶつかっているのを聞いたことがあります。代わりにあなたのPHPへの実際のパスを含むようにあなたのbashプロファイルを更新するべきです。このようなもの(私は実際には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バージョンでは、インストール後にmodを有効にする必要があります。あなたはphp5enmod
でそれをすることができます。
Sudo php5enmod mcrypt
Sudo service Apache2 restart
ノート
- PHP 7.1はmcryptを非推奨にし、7.2は mcrypt拡張子を完全に削除しました
- Laravel 5.1以降 mcryptの必要性を排除しました
_ mamp _ がインストールされていますか?
端末でwhich php
を使用して、使用しているPHPのバージョンを確認してください。
MAMPのPHPバージョンではない場合は、ユーザーのホームディレクトリの.bash_profile
を編集または追加する必要があります。つまり、cd ~
です。
.bash_profile
に次の行を追加します。
export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
編集: まず最初に、コマンドcd /Applications/MAMP/bin/php
を使用して、使用しているMAMPのどのPHPバージョンを確認してから、上記のPHPバージョンに置き換えます。
それから端末をrestart
して、あなたが今使っているのはどれか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が持っているものにそれを変更する必要があります。
P.S Macユーザーの場合はLaravel 4にMAMPを使用することをお勧めします。この問題は、汗をかくことなくphpファイル情報エラーとともに解決される予定であり、xamppのphpバージョンは非常に古くなっています。
OSX上でMAMPまたはXAMPPを使用していないユーザー(自作インストール済み)の場合:
brew install homebrew/php/php56-mcrypt
乾杯!
Ubuntuを使って
Sudo php5enmod mcrypt
私のためにトリックをしました。 CLIからPHPを使用する必要があるため、Apacheを再起動する必要はありません。
Ubuntuで(PHP-FPM、Nginx)
Sudo apt-get install php5-mcrypt
Php5-mcryptをインストールした後
あなたは、mods-availableで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
Apache上でLaravelを働かせる
PHPバージョン:PHP 5.5.9
Ubuntuのバージョン:14.04
私は窓の上の作業laravelプロジェクトをしました。私はそれをUbuntuサーバーにコピーしたとき、私はmcryptエラーを取得し始めました。何時間もの試行錯誤の末、これ
職人のコマンドを動かす
(職人のコマンドラインツールを使用中にmcryptエラーが発生している場合)
私はたくさんの試行錯誤をしたので、以前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
ブラウザエラーを修正しました
(ローカルlaravelインデックスページにアクセスするときにブラウザでmcryptエラーが発生している場合)
Sudo nano /etc/php5/Apache2/php.ini
php iniの動的にコンパイルされた拡張機能セクションの下に次の行を追加します。
extension=mcrypt.so
apacheサーバーを再起動し、laravelキャッシュを消去してすべてが動作している
他の人が働いていない場合、ubuntuのためにこれらのステップを試してください:
cd ~
Sudo apt-get remove php5-mcrypt
Sudo apt-get install php5-mcrypt
Sudo php5enmod mcrypt
Sudo service Apache2 restart
それが役立つことを願っています。ありがとうございます。
Ubuntu 14.04にphp-fpmをインストールした場合、私には以下がうまくいった:
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
あるいは、
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
多分あなたはインストールが必要です remi repo
これで私のLinux Mintローカル環境で解決しました https://askubuntu.com/questions/350942/cannot-get-mcrypt-for-php5
次のフォルダ/etc/php5/Apache2/conf.d/mcrypt.iniおよび/etc/php5/cli/conf.dにある/etc/php5/conf.d/mcrypt.iniファイルにシンボリックリンクを作成する必要がありました。 /mcrypt.ini
オールインワンの環境が必要です。あなたはMAMPやXAMPPあるいは他のどんなツールも使うことができます。これらのツールの1つをインストールした後、あなたはあなたの.bash_profileを編集(作成)する必要があるでしょう(あなたがbashを使うと仮定して)。
あるいは、よりシンプルでプロフェッショナルな場合でも、Laravel Homesteadを使用できます。
これは公式ドキュメントへのリンクです: http://laravel.com/docs/5.0/Homestead
また、Jeffreyはそれについての無料のチュートリアルを持っています: https://laracasts.com/series/laravel-5-fundamentals/episodes/2
以下のツールをすべてプレインストールするので、Homesteadを使用することをお勧めします。
@JetLaggyを拡張します。
MAMPディレクトリで.bash_profileを何度も変更しようとしたところ、MAMP phpディレクトリのファイルパーミッションを変更し、 'which php'を取得して正しいディレクトリを表示することができました。問題は、 'php -v'のような他の機能が働かなかったことでした。
だから私はMAMPを更新しました。 http://documentation.mamp.info/en/mamp/installation/updating-mamp
これは私の特定の設定のためのトリックをしました。私はPATHを更新されたバージョンのPHPを反映するように調整しなければなりませんでした、しかし一度私がしたら、すべてがうまくいきました!
端末にwhich php
コマンドを入力して、使用しているPHPのバージョンを確認してください。 MAMPのPHPバージョンでない場合は、Bashが使用している$ PATH変数を更新する必要があります。
まず、コマンド "cd/Applications/MAMP/bin/php"を使ってMAMPのどのphpバージョンをチェックし、バージョンを書き留めます(例えばphp5.6.7)。
バージョンがわかったら、~/.bash_profile
ファイル(つまり、ホームディレクトリにある.bash_profile
)を編集して、エクスポート行を追加します。
export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH
Php5.6.7をMAMPで選択したPHPのバージョンに置き換えてください。
ファイルを保存したら、必ずターミナルを閉じてからもう一度開いてください。それが終わったら、MAMPに同梱されているPHPを使用します。
あなたが.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
これらの3行を端末にコピーして貼り付けると、MAMPコントロールパネル内で選択されているPHPバージョンが正しく出力されます。
これら2つのパッケージマネージャのどちらかに付属しているPHPを使用している場合は、path
に/usr/local/bin/
(自作)または/opt/local/bin
(MacPorts)が含まれていることを確認してください。
次のコマンドでMacPortsを使ってPHPの正確な場所を見つけることができます。
port contents php70 | grep bin/php
php70
をインストールしたPHPのバージョンに置き換える必要があります。
Homebrew-php( https://github.com/Homebrew/homebrew-php )は、さまざまなバージョンのPHPを持つタップです。
次のコマンドでHomebrewを使用してPHPの正確な場所を見つけることができます。
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シェルを使用している場合は、以下の手順を実行してください。
nano ~/.zshrc
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
source ~/.zshrc
which php
- MAMP 5.6.10のパスを取得してください。5.6.10はMAMPに設定したPHPのバージョンです。
Laravelはmcrypt
拡張子を必要としません 。 mcrypt
は時代遅れです、libmcryptへの最後の更新は2007年でした。Laravel 4.2も時代遅れで、それ以上のサポートはありません。最善の(=安全な)解決策はLaravel> 5.1にアップデートすることです(Laravel 5.2の前にLTSはありません)。
Mcryptは2015年6月にLaravelから削除されました: https://github.com/laravel/framework/pull/9041
$ brew install mcrypt php70-mcrypt
私はPHP 7.0.xを実行しているので、違うバージョンを使用している場合は "php70"をあなたのバージョンに変更してください。
他の答えで述べたように、あなたはあなたのphpバージョンを$ php -v
で見ることができます。
Sudo php install mcrypt
Sudo php5enmod mcrypt
あなたのPHPバージョンに基づくubuntu 14.04:5.6,7.0,7.1,7.2,7.3
Sudo apt-get php {バージョン} -mcryptをインストールしてください
Sudo apt-get install php7.1-mcrypt
Sudo phpenmod mcrypt