Linux管理をはじめて数年、これまでPleskにお任せして避けてきた自力サーバー管理をはじめることになった。自宅サーバーもやってみたいし。
先日この記事でphpをソースからビルド・インストールしたと書いたが、サイトを作っていくうちにmb_send_mailが動作していないことが分かった。
エラーも出ないし、なんだか理由が分からなかったが、いろいろ調べていくうちにコンパイル時の問題であることが分かった。
mb_send_mailでメールが送れなくて、phpをソースからインストールしたという方は、phpのソースディレクトリの「main/php_config.h」このファイルの中に
という行があるかどうか見てほしい。もしなかったら、原因はこれだ。
上記のファイルに「#define HAVE_SENDMAIL 1」という一行を追加する。私は適当に「#define ・・・」が続いている最後の行に追加した。
次に /etc/php.ini をどこかにコピーしてバックアップを取っておき、httpdを終了させておく。
phpをコンパイルする前に、ソースディレクトリに移動して
を実行し、その上で再度phpをコンパイルする。前の記事でも書いたが、あらためてもう一回私が使ったconfigureオプションを掲載しておく。
で、makeするわけだが、私の環境では下記のようなエラーが出てmakeできなかった。
lltdlがインストールされていないのが原因なので、インストールする。
で、
エラーも出ないし、なんだか理由が分からなかったが、いろいろ調べていくうちにコンパイル時の問題であることが分かった。
mb_send_mailでメールが送れなくて、phpをソースからインストールしたという方は、phpのソースディレクトリの「main/php_config.h」このファイルの中に
#define HAVE_SENDMAIL 1
という行があるかどうか見てほしい。もしなかったら、原因はこれだ。
上記のファイルに「#define HAVE_SENDMAIL 1」という一行を追加する。私は適当に「#define ・・・」が続いている最後の行に追加した。
次に /etc/php.ini をどこかにコピーしてバックアップを取っておき、httpdを終了させておく。
phpをコンパイルする前に、ソースディレクトリに移動して
make distclean
を実行し、その上で再度phpをコンパイルする。前の記事でも書いたが、あらためてもう一回私が使ったconfigureオプションを掲載しておく。
'./configure' \
'--prefix=/usr/local' \
'--with-mysql=/usr/local/mysql' \
'--with-pdo-mysql=/usr/local/mysql' \
'--with-apxs2=/usr/sbin/apxs' \
'--enable-mbstring' \
'--enable-mbregex' \
'--with-jpeg-dir' \
'--enable-ftp' \
'--enable-exif' \
'--enable-sockets' \
'--with-openssl' \
'--with-zlib' \
'--with-gd' \
'--with-curl' \
'--enable-zend-multibyte' \
'--enable-pcntl' \
'--with-mcrypt' \
'--with-tidy'
で、makeするわけだが、私の環境では下記のようなエラーが出てmakeできなかった。
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [libphp5.la] エラー 1
lltdlがインストールされていないのが原因なので、インストールする。
yum install libtool-ltdl libtool-ltdl-devel
で、
make
make install
この記事にコメントする