
Ubuntu日本語フォーラム

ログインしていません。
こんにちは
現在ubuntu9.10でapache2.2.12、PHP5.2.10、MySQL5.1.37でWebサーバーを動かしているのですが
MySQLの管理にphpmyadminを入れたところログイン画面がログイン後に画面下に
mcrypt 拡張をロードできません。PHP の設定を確認してください
が出てきます。mcryptを必要なWebスクリプトを導入しようと考えているのでこのままではまずいと思い
php5-mcryptやlibmcrypt等をSynapticで探してみましたが印図トール済みになっているので
そのままSynapticで再インストールも試しましたが画面下に表示され続けてます。
表示はされてますが上記環境を作った時からphpmyadminにはログインできていて動作も異常はありません。
ログインできているので何かのトラブルで誤表示されているだけなのか
それともphpmyadminのログインに暗号化処理が使われずに動いているのかわからず不安です。
どうしたら正常になりますでしょうか?
オフライン
>MySQLの管理にphpmyadminを入れたところログイン画面がログイン後に画面下に
MySQLの管理にphpmyadminを入れたところログイン画面やログイン後に画面下に
>php5-mcryptやlibmcrypt等をSynapticで探してみましたが印図トール済みになっているので
php5-mcryptやlibmcrypt等をSynapticで探してみましたがインストール済みになっているので
でした。
オフライン
phpinfoでextensionの部分はコメントアウトになっていて、phpinfoで見ると
extension_dir /usr/lib/php5/20060613+lfs /usr/lib/php5/20060613+lfs
となっており、そのフォルダをみるとmcrypt.so等は存在してました。
オフライン
あせっているので誤字だらけでごめんなさい。
>phpinfoでextensionの部分はコメントアウトになっていて
php.iniでextensionの部分はコメントアウトになっていて
オフライン
angel による投稿:
php.iniでextensionの部分はコメントアウトになっていて
コメントアウトする=その行をコメントにする なので、「コメントアウトになっている」(コメントアウトされている?)ということは、書かれてないのと同義です。
該当のextensionの設定を「コメントアウトを外す(コメントではなくする)」必要があります。
# たまに、「コメントアウトする」「コメントアウトを外す」を逆の意味で覚えている人もいるので念のため。
また、extensionが正しく組み込まれているかどうかは、phpinfoの結果に、そのブロックが存在するかどうかで判断できます。mcryptのブロックが無いのであれば、組み込まれていません。
組み込まれる際にエラー等がある場合、Apacheのエラーログに、なにか書かれているのではないかと思うのですが・・・なにか出ていないか確認してみてください。
# もし、extensionの組み込みがコメントアウトされているなら、組み込みを試みてもいない為、エラーも出ません。まずは、有効にしてください。
オフライン
書き忘れてました。
extension_dirですが最初コメントアウトされていたのでそのせいかと思って
;extension_dir="/"
から
extension_dir="/usr/lib/php5/20060613+lfs"
にしてみましたが、どちらにしてもコメントアウト時でもphpinfoで
extension_dir /usr/lib/php5/20060613+lfs /usr/lib/php5/20060613+lfs
となっていることから現在はまたコメントアウトしています。
/usr/lib/php5/にext等のフォルダを作り.soファイルをそちらへ移して
extension_dir="/usr/lib/php5/ext"
とした方が良いのでしょうか?
phpinfoにmcryptのブロックは今のところありません。
ブロックが無い=設定が無効
ではなく、
ブロックが無い=--with-mcryptになっていない
だと思っていたのでSynapticでのインストールではダメなのかなあと思いこちらに書きましたが設定でいけるようであれば設定をもう一度見直してみますね。
オフライン
あ、あとextensionのところは上記で書いたようにコメントアウトの状態ですがphpinfoでは
extension_dir /usr/lib/php5/20060613+lfs /usr/lib/php5/20060613+lfs
となっているので、
phpinfoで他のextensionを見るとGDやImagick等はブロックがありONになっています。
オフライン
こんにちは。
angel による投稿:
書き忘れてました。
extension_dirですが最初コメントアウトされていたのでそのせいかと思って
;extension_dir="/"
から
extension_dir="/usr/lib/php5/20060613+lfs"
にしてみましたが、どちらにしてもコメントアウト時でもphpinfoで
extension_dir /usr/lib/php5/20060613+lfs /usr/lib/php5/20060613+lfs
となっていることから現在はまたコメントアウトしています。
/usr/lib/php5/にext等のフォルダを作り.soファイルをそちらへ移して
extension_dir="/usr/lib/php5/ext"
すいません、extensionに関連して、php.iniで確認する設定箇所は、2箇所あります。
今書かれている、extension_dirの設定がその1つです。この値は、phpinfoにて、実際にどのディレクトリが設定され、参照されているのかがわかります(A)
もう1つが、個々のextensionを読み込む分部です。これは、extension=php_mcrypt.so といった、個々のexteionの読み込みを指定する部部です(B)
(A)については、コメントになっている場合は、デフォルトのディレクトリが参照されます(phpinfoで実際のディレクトリが確認できます。通常、コメントのままでも動くようにコンパイルされています)
(B)については、静的リンクされたextensionでは無い限り、明示的に指定(コメントを外す)必要があります。また、(B)で指定したファイルは、(A)で指定しているディレクトリのいずれかに存在する必要が在ります。
おそらく、(B)が行われていない思いますので、extension=というコメントアウトされた行がずらずらと並んだところから、mcryptを含めて必要なextensionのコメントを外してください。
オフライン
weyk による投稿:
おそらく、(B)が行われていない思いますので、extension=というコメントアウトされた行がずらずらと並んだところから、mcryptを含めて必要なextensionのコメントを外してください。
これはWindows版PHPみたいに書かれているのでしょうか?
まったく見当たらないので
extension_dirの下に
extension=php_mcrypt.so
と書いてapacheを再起動してみましたが結果は変わりませんでした。
オフライン
こんにちは。
angel による投稿:
まったく見当たらないので
extension_dirの下に
extension=php_mcrypt.so
と書いてapacheを再起動してみましたが結果は変わりませんでした。
再び、すいません、Windowsのバイナリ配布のphp.iniと結構、構成が違うみたいですね。
下記のphpのオフィシャルサイトにちょっとだけ出てきているコメントを引用すると、
http://www.php.net/manual/ja/mcrypt.setup.php
Ilia による投稿:
For Ubuntu Linux add a line:
extension=php_mcrypt.so
to the file /etc/php5/apache2/php.ini
and restart network:
sudo /etc/init.d/networking restart
とあり、php.iniに行を追加することになるようです(※)
# リスタートは、Apacheの再起動でOKだとは思います(自信なし)
extension=の行が有効であり、かつ、phpinfoに出てきていないようであれば、Apacheのerror.logに何か出ているのではないかと思うのですが・・・何か出てきていませんか?
また、いじっているphp.iniが、実際に参照しているものであるかを確認する為に、どこか明示的に変更して、phpinfoの結果に反映されるかも確認してみてください(phpinfoに、php.iniの絶対パスが表示されませんでしたっけ・・・?)
利用する再に必要なのは、以下の3点・・・のようです。
0.(Apache2、php5はインストール済みと仮定)
1.php5-mcrypt のパッケージを導入する(本スレッドでは、インストール済みなのを確認済み)
2./etc/php5/apache2/php.ini に、extension=php_mcrypt.so という行を追加(追記)する(※)
3.sudo /etc/init.d/networking restart にて、再起動する。
※複数のExtensionの組み込みをパッケージで管理する(=単一のphp.iniへの変更が競合する?)ために、複数のphp.iniを纏めるような動作が存在する可能性も考えられます。識者から、変更すべき、より適切なファイルについて、指摘があるかもしれません(すいません、この辺は全くわかりません)
オフライン
本来、Ubuntuのパッケージ(php5-mcrypt)としてインストールすれば、自動的に読み込まれるはず・・・のようです。
気になる点があるため、もうちょっと調べています・・・
なお、直接追記した場合に動作しないのは、php_mcrypt.so→mcrypt.so と、extensionのファイル名が異なっている為のようでした。ここを正しく記載して、(実際に参照されている)php.iniに追記すれば、動作はしそうです。
オフライン
いろいろありがとうございます。
返信で書いたとおり0~2まではできているはずなので
weyk による投稿:
extension=の行が有効であり、かつ、phpinfoに出てきていないようであれば、Apacheのerror.logに何か出ているのではないかと思うのですが・・・何か出てきていませんか?
また、いじっているphp.iniが、実際に参照しているものであるかを確認する為に、どこか明示的に変更して、phpinfoの結果に反映されるかも確認してみてください(phpinfoに、php.iniの絶対パスが表示されませんでしたっけ・・・?)
を疑ってみて、
まずphpinfoを参照しphp.iniのパスをチェックしました。
Loaded Configuration File /etc/php5/apache2/php.ini
になっていました。
これでは解決にならないので
/etc/php5/cgi/php.ini
/etc/php5/cli/php.ini
の2ファイルにもextension=php_mcrypt.so行を追加してみましたがphpinfoを見てもブロックは無いようです。
うーん・・・困った・・・
オフライン
/etc/php5/apache2/php.ini のextension=php_mcrypt.so を
extension=mcrypt.so
にしたらブロックが出ました。
無事解決しました。なんとお礼を言ったらいいか・・・とても感謝しています。
オフライン
こんにちは。
angel による投稿:
/etc/php5/apache2/php.ini のextension=php_mcrypt.so を
extension=mcrypt.so
にしたらブロックが出ました。
無事解決しました。なんとお礼を言ったらいいか・・・とても感謝しています。
動いて何よりです。当方もUbuntu(Linux)でのファイル構成について大変勉強させていただきました(度重なる試行錯誤的なコメントで申し訳ないです)
そうすると、あとはなんでパッケージのインストールで自動的に認識しないのか?という点だけですね。
php.iniを直接修正した場合の、私が思いつく問題の範囲では、php5-mcryptをアンインストールした場合に、本来、パッケージのアンインストールに伴って/etc/php5/conf.d/mcrypt.ini が削除され、読み込まれることも無くなる・・・はずのところで、人手でphp.iniを変更して読み込まれないようにする必要があるだけ(影響は軽微) と考えています。
そのため、/etc/php5/apache2/php.iniは、ユーザが変更している場合には、(php5の)パッケージをアップデートしても勝手に更新されてしまうことはないため、そのまま使用しても問題は無さそうです。
オフライン