PHP5のmcryptを取得できません


29

私はこれを何度もしました:

sudo aptitude install php5-mcrypt

sudo apache2ctl restart

aptitudeはmcryptがインストールされていると言います。すでに3回再インストールしました。Apacheをインストールしてから約20回再起動しました。phpInfoを見ると、mcryptがリストされていません。コードを実行しようとすると、mcrypt関数(1つを選択-任意の1つ)が存在しないと表示されます。mcryptは明らかに有効になっていません。

誰が間違っているのか考えていますか?どの部分がどこにどのように収まるのかがわかりません。

PHP 5.5.3をインストールしました


PHPもパッケージマネージャー(apt-get/ aptitude)からインストールしましたか?パッケージphp5-mcryptphp.ini、「認識」しているs の拡張のみを構成できます。第二に、apache2ctlモジュールをリロードする場合、私は今ではありません。Apacheを再起動する「通常の」方法は次のようなものですsudo service apache2 restart。第三に、PHPはどのようにApacheに接続されますか?(f)cgiやphp-fpmなど(mod-phpとは対照的に)を使用する場合、おそらくApacheを再起動することに加えて、PHPを単独で再起動する必要があります。
ヘニングコッカーベック

すべてをaptitudeを使用してインストールしました。apache2ctlはapacheを停止および再起動します。これらのインストール以降、コンピューターを数回再起動しました。PHPと同様にphp5-mcryptをインストールしてからapacheが「再起動」されたと言ったときに私を信じてください。PHP5は、Apacheモジュールとして正常に動作します-これはPHPで書かれたWebサイトです-したがって、PHPはapacheモジュールとしてインストールされていると思います。/ etc / apache2 / mods-enabledに移動すると、php5がそのリストに含まれています。/ etc / php5 / mods-availableにmcryptは表示されませんが、sudo aptitude search mcryptを実行すると、libmcypt4、mcrypt、php5-mcryptの3つのものがインストールされていることがわかります-????
webDeveloperDave

(約5〜7番目のエントリ)php.iniの出力にリストされているものはどれphpinfoですか?のファイルである必要があります/etc/php5/。そのファイルでを検索するとmcrypt、何が表示されますか?
ヘニングコッカーベック

php.iniは/etc/php5/apache2/php.iniにあり、2つの設定を持つmcryptセクションがあります-両方ともコメントアウトされています-mcrypt.algorithms_dirとmcrypt.modes_dir上のコメントはデフォルトは/ usr / local /ですlib / libmcrypt-これらのディレクトリは存在しません。これは、aptitudeがそうだと言っても、mcryptがインストールされないかもしれないという事実に最初に私を決めたものです。私がsudo aptitude infoを実行すると、mcryptはパッケージの状態がインストールされていると言います-バージョン2.6.8-1.3-それはConflicts:mcrypt-と言うので、それは何を言っていますか?このパッケージがそれ自体と競合することは?ユーザー情報を暗号化するより良い方法はありますか?
webDeveloperDave

mcryptパッケージを気にする必要はありません。これは、PHP拡張機能と同様に、libmcryptを使用するコマンドラインプログラムです。そのため、パッケージlibmcrypt4がインストールされていることを確認する必要があります。にphp.iniスニペットはあり/etc/php5/conf.d/mcrypt.iniますか?これでlibがロードされます。そのスニペットはPHPによってロードされますphpinfoか(を参照)。繰り返しますが、sudo service apache2 restart代わりにApacheを再起動しようとしましたapache2ctlか?
ヘニングコッカーベック

回答:


62

これを試して

sudo php5enmod mcrypt

sudo service apache2 restart

うまく機能し、シンボリックリンク(すべてをコピーする)は+1です。とても賛成です!
ステファノMtangoo 14

4
これは私のために働いた。しかし、最初のコマンド(ln)は必要ありませんでした。/etc/php5/apache/conf.dフォルダー内にmcrypt.iniがありませんでした。sudo php4enmod mcryptの実行は機能しました。今すぐファイルします。サーバーは動作します!どうもありがとう。
2014

1
うまく機能してくれてありがとう。しかし、「sudo php5enmod mcrypt」を使用したコマンドについて知りたいのですが、これは何ですか..?このコマンドを使用する目的は何ですか?
エラバラサン14年

1
「sudo php5enmod mcrypt」は優先順位番号(デフォルト20)で「/etc/php5/conf.d」ディレクトリにシンボリックリンクを作成するため、「sudo php5dismod mcrypt」でiniファイルを変更せずにアンインストールできます
Vizjerai

11

Ubuntu 13.10でも同様の問題がありました。composer installを実行すると、同じエラーが生成され、終了しました。

****Mcrypt PHP extension required.
Script php artisan clear-compiled handling the post-update-cmd event returned with an error

  [RuntimeException]  
  Error Output:****   

私はaptitude をインストールmcryptしましたが、ロードされた拡張機能として表示されませんでした:php5-mcryptphp -mmcrypt

aptitude install mcrypt
aptitude install php5-mcrypt

を実行しupdatedb、その後locate mcrypt。で見つけましmcrypt.ini/etc/php5/conf.d。ただし、他のすべての拡張子(jsonなど)の.iniファイルはとに /etc/php5/apache2/conf.dあり/etc/php5/cli/conf.dます。これらは両方ともへのリンク../../mods.availableでした。

そこで、次にに移動mcrypt.ini/etc/php5/available-modules、リンクを設定しました。

cd /etc/php5/cli/conf.d
ln -s ../../mods-available/mcrypt.ini 20-mcrypt.ini

そして同様に/etc/php5/apache2/conf.d

そして出来上がり、それはに現れたphp -m


この答えをありがとう。私を完全に整理しました。/etc/php5/conf.d/mcrypt.iniを移動しませんでしたが、シンボリックリンクをその場所を指すように設定するだけで、これも機能し、mcryptの今後の更新が自動的にロードされるようになりますか?
alexleonard 14年

2

PHPがApacheによって呼び出されたときにlibmcryptをロードするiniスニペットが欠落しているように見えます。/etc/php5/apache2/conf.d/mcrypt.ini次の内容で呼び出されるファイルがあるはずです

; configuration for php MCrypt module
extension=mcrypt.so

システムにインストールされているものに応じて、/etc/php5/cli/conf.d/mcrypt.iniまたはなどの他のPHP統合の構成からコピーすることができるはず/etc/php5/conf.d/mcrypt.iniです。


2

mcryptモジュールはデフォルトでは有効になっていません。mcryptモジュールを有効にしてから、Apacheを再起動します(クレジット

sudo php5enmod mcrypt
sudo service apache2 restart

1

さて、これで終わりです。「enmod」のような単純なことを行う最も複雑な方法を探しているようです。)Boinstが言うように: sudo php5enmod mcrypt。次に、Apacheをリロードします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.