私が使用しようとしていますmigrate
の関数をLaravel 4
上OSX
。ただし、次のエラーが発生します。
Laravel requires the Mcrypt PHP extension.
私が理解している限り、すでに有効になっています(下の画像を参照)。
何が問題で、どうすれば修正できますか?
私が使用しようとしていますmigrate
の関数をLaravel 4
上OSX
。ただし、次のエラーが発生します。
Laravel requires the Mcrypt PHP extension.
私が理解している限り、すでに有効になっています(下の画像を参照)。
何が問題で、どうすれば修正できますか?
回答:
Web対応の拡張機能とコマンドライン対応の拡張機能は異なる場合があります。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バージョンでは、インストール後にmodを有効にする必要があります。あなたはそれを行うことができますphp5enmod
。
sudo php5enmod mcrypt
sudo service apache2 restart
ノート
- PHP 7.1は非推奨のmcryptと7.2でmcrypt拡張を完全に削除しました
- Laravel 5.1以降では、mcryptの必要性がなくなりました
sudo apt-get install php5-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を確認します。
そして、それは今動作しているはずです。
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私はMacユーザーのLaravel 4にMAMPを使用することをお勧めします。この問題はphpファイルの情報エラーと一緒に問題なく解決され、phpバージョンのxamppは非常に古くなっています。
"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
export PATH="/opt/lampp/bin:$PATH"
OSX(homebrewがインストールされている)上のMAMPまたはXAMPP以外のユーザーの場合:
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をインストールした後
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
sudo aptitude -y install php5-mcrypt
、続いてsudo php5enmod mcrypt
とsudo service php5-fpm restart
。(ソフトリンクの手順は省略しました)。それは働いた:)
LaravelをApacheで動作させる
PHPバージョン:PHP 5.5.9
Ubuntuバージョン:14.04
私はWindows上で作業中のlaravelプロジェクトを持っていました。ubuntuサーバーにコピーしたときに、mcryptエラーが発生し始めました。何時間もの試行錯誤の後
職人コマンドを機能させる
(artisanコマンドラインツールの使用中に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キャッシュとすべての機能を削除します
docker-php-ext-install mcrypt
。画像でテスト済み:php:5.6.31-apache
。それがなければ、表示されphp -m
ませんmcrypt
。
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
ubuntuでは、他のユーザーが機能していない場合は、次の手順を試してください。
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
お役に立てれば幸いです。よろしくお願いします!
私の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
これは私のLinux Mintローカル環境で私のためにそれを解決しました/ubuntu/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
また、ジェフリーには無料のチュートリアルがあります:https : //laracasts.com/series/laravel-5-fundamentals/episodes/2
以下のすべてのツールをプレインストールするので、ホームステッドを使用することをお勧めします。
@JetLaggyを拡張する:
MAMPディレクトリで.bash_profileを何度も変更した後、MAMP phpディレクトリのファイル権限を変更し、適切なディレクトリを表示するための「どのphp」を取得することができました。問題は、「php -v」などの他の機能が動作しないことでした。
そこで、MAMPを更新しました。 http://documentation.mamp.info/en/mamp/installation/updating-mamp
これは私の特定のセットアップのためのトリックをしました。更新されたバージョンのPHPを反映するようにPATHを調整する必要がありましたが、変更するとすべてが機能しました!
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を使用することになります。
内部に置く必要がある行を簡単に見つける方法の1つ.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バージョンが正しく出力されます。
あなたpath
が含むもの/usr/local/bin/
(Homebrew)または/opt/local/bin
これら2つのパッケージマネージャーのいずれかに付属しているPHPを使用している場合(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のバージョンで置き換える必要があることに注意してください。
Laravelはmcrypt
もはや拡張を必要としません。mcrypt
libmcryptの最後の更新は2007年でした。Laravel4.2も廃止され、サポートされなくなりました。最良の(=安全な)ソリューションは、Laravel> 5.1に更新することです(Laravel 5.2より前のLTSはありません)。
Mcryptは2015年6月にLaravelから削除されました:https : //github.com/laravel/framework/pull/9041
あなたのphpバージョンに基づくubuntu 14.04では:5.6、7.0、7.1、7.2、7.3
sudo apt-get install php {version} -mcrypt
sudo apt-get install php7.1-mcrypt
sudo phpenmod mcrypt