PHPとextension、mod_phpを、pkg installでインストールしました。
端末から
$php -m とすると、特にエラーなく、mbstringやその他のモジュールが表示されます。
ところが、ブラウザからphpinfo();でみると、それらのモジュールが表示されません。
どのような方法で、phpinfo();に、mbstring及びその他のモジュールを表示されることができるのでしょうか。
環境
FreeBSD 11.1-RELEASE
Apache 2.4
PHP 7.1.10
やったことは、質問文が長すぎるといわれたので、補足欄に記述します。よろしくお願いします。
1.portでのインストール[実は最初はportでした。同じエラーになり、reinstallした後からSegmentation fault.あきらめてpkgでインストール。]
2. そもそもmbstring.soがないのでは?と考え、探すとありました。端末からphp XXX.php で普通にmbstringを使った関数は動きます。
4.実はphp.iniを参照しているファイルが違うのではないかと考え、php.iniのLoaded Configuration Fileを確認して、適当にpost_max_filesを変更してみると正常に反映された。
5.php.iniでパスが通っていないと考え、phpinfoを見てみると、Additional ini parsedに /usr/local/etc/php/ext-20-mbstring.ini,が存在。
6.ext-20-mbstring.iniの中身は単純にextension=mbstring.soなので、php.iniの方にextenstion=mbstring.soとか、mbstring.soの場所を絶対パスで指定したら、php -mで既に組み込まれていると怒られる。
従って、ターミナル上では正常なのに、phpinfo()では見えない・・。
長文失礼しました。よろしくお願い致します。
ターミナルと Apache が動いてる環境で、LD_LIBRARY_PATH が違うんじゃないでしょうか。
Apache のプロセスでは、LD_LIBRARY_PATH に mbstring.so が置いてあるディレクトリが含まれてない。
似たような人↓
https://blog.katsuma.tv/2007/05/apache_php_env.html
LD_LIBRARY_PATH には、.so が置いてあるディレクトリを記述するので、
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/var/hoge.so
じゃなくて、
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/var/
だと思うのですけれど。
ターミナルと Apache が動いてる環境で、LD_LIBRARY_PATH が違うんじゃないでしょうか。
Apache のプロセスでは、LD_LIBRARY_PATH に mbstring.so が置いてあるディレクトリが含まれてない。
似たような人↓
https://blog.katsuma.tv/2007/05/apache_php_env.html
LD_LIBRARY_PATH には、.so が置いてあるディレクトリを記述するので、
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/var/hoge.so
じゃなくて、
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/var/
だと思うのですけれど。
なるほど、ドンピシャな状態ですね。
一度試してみます。ありがとうございました!
なるほど、ドンピシャな状態ですね。
2017/10/29 14:01:09一度試してみます。ありがとうございました!