電子書籍の厳選無料作品が豊富!

以下のようなコードでmysqltest.phpというファイルを作成しました。
これを
php -f mysqltest.php
とやると成功します。
しかし、ブラウザでhttp://パス/mysqltext.phpとやると失敗します。

双方がどう違うのか教えていただけないでしょうか。

以下コードです。

-----------------------
<html>
<body>
<?php
$hostname = "localhost:/var/lib/mysql/mysql.sock";
$name = "root";
$password = "pass";
printf( "hostname:%s<br>\n" , $hostname );
printf( "username:%s<br>\n" , $name );
printf( "password:%s<br>\n" , $password );


mysql_connect($hostname, $name, $password )
or die('cannot connect to database');

?>

</body>

</html>
----------------------------------
単に「ホスト:ポート」「ユーザネーム」「パスワード」を指定してconnectしているだけです。

コマンドラインから実行すると成功します
----------------------
<html>
<body>
hostname:localhost:/var/lib/mysql/mysql.sock<br>
username:root<br>
password:komaba<br>

</body>
</html>
----------------------------

ブラウザで実行すると失敗します。

-----------------------------
hostname:localhost:/var/lib/mysql/mysql.sock
username:root
password:pass
cannot connect to database
-----------------------------

A 回答 (1件)

#先にお断りしておきますが、ホントに自身がありません。



MySQLのデフォルトのポート3306がまだ閉じているのではないですか?

UNIX domain socketsは開いているがInternet connectionsが閉じているので
コマンドラインからは成功するが、Apacheからはアクセス出来ないという経験がありました。

netstat -anで3306ポートのstateがLISTEN状態にあれば開いている状態だといえます。

#UNIXでの話しですのでOSがWindowsの場合、このアドバイスは有効ではありませんのでスルーしてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!