どうかご教示いただけましたら幸いです。
異常の詳細は以下の通りです。
(1)ターミナル(bash)からphpスクリプトを実行
→「セグメンテーション違反です」と表示されて実行できない。
【スクリプトコード】
#!/usr/local/bin/php
<?php
$link = mysql_connect('localhost','user','password');
?>
※ターミナルから直接MySQLへのアクセスには問題なし。
※処理内容にMySQLが絡まないPHPスクリプト(ファイルのコピー、テキスト処理)の実行には問題なし。
(2)MySQLのデータを読み込んでhtmlを出力するphpページにアクセス
Apacheエラーログに前項同様のエラー(child pid ***** exit signal Segmentation fault (11)」(*****は毎回異なる数値))。
※やっていることは1つ目のhtmlソースを読み込み、特定の文字列があれば2つ目のhtmlソースとMySQLから読み込んだ内容を挿入するものです。
※2つ目のhtmlソースの途中までで表示が止まり、以降が表示されません。
※MySQLから読み込む部分をコメントアウトすると、それ以外部分は正常に最後まで表示されます。
【ソースコードの概略】
<?php
$insertstart = "<div id=¥"main¥">"; #ファイル挿入箇所検知文字列
#1つ目ファイルのファイルハンドラ
$handle_comm = fopen("/usr/local/apache2/htdocs/common.html","r");
#2つ目ファイルのファイルハンドラ
$handle_main = fopen("/usr/local/apache2/htdocs/main1.html","r");
while (!feof($handle_comm)) {
$buffer_comm = fgets($handle_comm);
echo $buffer_comm; #1つ目のファイルを1行ずつ出力
if ((strpos ($buffer_comm, $insertstart)) !== false) { #挿入開始
#====2つ目のファイル挿入
while (!feof($handle_main)) {
$buffer_main = fgets($handle_main);
echo $buffer_main;
}
fclose($handle_main);
#====2つ目のファイル挿入おわり
#====MySQLデータ挿入
$link = mysql_connect('localhost','user','password');
$db_selected = mysql_select_db('userdb',$link);
$result_resource = mysql_query('SELECT id,`year`,month,`name` FROM `index2` ORDER BY id DESC');
$result = mysql_fetch_array($result_resource);
while ($result !==false) {
printf ("%03s",$result["id"]);
printf (":%4s",$result["year"]);
printf ("/%02s",$result["month"]);
printf (":%s<¥/li>¥n",$result["name"]);
$result = mysql_fetch_array($result_resource);
}
echo "<¥/ul>¥n";
mysql_close($link);
#====MySQLデータ挿入おわり
} #挿入おわり
} #1つ目出力おわり
fclose($handle_comm);
?>
元々は問題なく表示できていましたが、下記経緯にて問題が発生するようになりました。
1.MySQLのアップグレード(5.0.49→5.1.30)を実施。
→Apacheの停止再起動ができなくなった。
エラーメッセージは
「modules/libphp5.so が libmysqlclient.so.15 を呼び出そうとしたが見つからない」
という内容。
2.確認するとこのファイルの名前がlibmysqlclient.so.16に変わったことが判明。
→php(5.2.8)を上書き再インストール。
→Apacheは問題なく再起動できるようになった。
PHPも引き続き正常動作(MySQLの絡まないものについては)
環境は以下の通りです。
OS:CentOS 5.2
Service:Apache 2.2.9、PHP 5.2.8、mysql 5.1.30