freebsdでのPHPセットアップで失敗
どなたかご存知の方がいらっしゃいましたらご教授頂ければと思い、書き込ませて頂きます。
freebsdでのPHPセットアップが上手く行きません。
一通りの流れとしては、
1.空のPCにfreebsdインストール
2.freebsdサーバにmysql/phpセットアップ。
3.apacheセットアップ&起動。apacheによる表示は確認。
mysqlサーバ起動。
テーブル作成完了。データinsert完了。
4.拡張子を.phpにしたファイルを置いて、サーバーURLから内容の表示を確認。
ここまではOK。
5.ファイル名をdb.phpとし、mysql_connectでmysqlへ接続しようとすると、そこで表示されなくなる。
6.様子がおかしいので、デバッグして確認
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
<html>
<head>
<title>test</title>
</head>
<body>
test start<br>
<?php
print('a<br>');
//connection:
$link = mysql_connect("localhost","user","password");
print('b<br>');
if (!$link) {
print('refuse!'.mysql_error());
die('refuse!'.mysql_error());
}
print('c<br>');
?>
</body>
</html>
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
で表示すると、ブラウザで取得しているソースコードには、
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
<html>
<head>
<title>test</title>
</head>
<body>
test start<br>
a<br>
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
というソースが返ってきており、途中で処理が止まっているようです(最後まで表示されない)。
ユーザ名とパスワードの見直し確認もしましたが、間違っていなさそうです。
※mysql_connectでの接続時のlocalhostはそのままですが、ユーザ名とパスワードは変えてあります。
単に文字コードが誤りかと思いましたが、全てUTF-8で統一しています。
windows環境でutf-8のソースを作成して、それをバイナリでサーバーにアップロードしています。
■mysqlでの設定:
mysql> show variables like 'character_set%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)
■php.iniでの設定
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
extension=php_mbstring.dll
extension=php_mysql.dll
[mbstring]
; language for internal character representation.
; http://php.net/mbstring.language
mbstring.language = Japanese
; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
; http://php.net/mbstring.internal-encoding
;mbstring.internal_encoding = EUC-JP
mbstring.internal_encoding = UTF-8
; http input encoding.
; http://php.net/mbstring.http-input
;mbstring.http_input = auto
mbstring.http_input = UTF-8
; http output encoding. mb_output_handler must be
; registered as output buffer to function
; http://php.net/mbstring.http-output
;mbstring.http_output = SJIS
mbstring.http_output = pass
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
; http://php.net/mbstring.encoding-translation
;mbstring.encoding_translation = Off
mbstring.encoding_translation = On
; automatic encoding detection order.
; auto means
; http://php.net/mbstring.detect-order
;mbstring.detect_order = auto
mbstring.detect_order = auto
試しに、
$link = mysql_connect("localhost","user","password");
の部分を
mb_internal_encoding("UTF-8");
などに変更しても同じ箇所でぶつ切りになった状態でソースが表示されます。
echo 'aaa';
などに変えるとこの部分は処理されて出力されます。
つまり単純なechoやprintなどの関数は処理されて、ある程度の関数を使用すると処理されなくなる(ように見えます)。
最終的な目標としてはmysqlからデータを表示することだけです。
何か単純な原因が噛んでしまっていると思っているのですが、どなたかこの問題の解決法を分かる方がいらっしゃいましたらご教授いただけないでしょうか?
尚、現在使用している環境は次の通りです。
FreeBSD 9.1
PHP Version 5.4.7
Apache/2.2.23 (FreeBSD) mod_ssl/2.2.23 OpenSSL/0.9.8x
mysqlnd mysqlnd 5.0.10
mysql Server version: 5.5.28
宜しくお願い致します。