0

PHP 5.2環境でPHP5.3.5(Apacheモジュールとしてインストール)用に作成されたスクリプトをテストしたかったのです。

Apache2.0.64とPHP5.2.17の新しいコピーをインストールし、以前にPHP5.3を構成したのとまったく同じように構成しました。私がApachebinディレクトリにコピーlibmysql.dllしたことを除いて(PHP 5.3にはもうこのファイルがありません)。

両方のサーバーは手動で構成され(XAMPPバージョンなどではありません)、ローカルにインストールされた同じmySQLServer5.5.8にアクセスします。両方のサーバーは、システムアカウントでWindowsServerとして実行されています。

PHP 5.3は完全に機能し、PHP5.2はエラーを返します。

Warning: mysql_connect() [function.mysql-connect]: Access denied 
for user 'SYSTEM'@'localhost' (using password: NO) in C:\Tools\htdocs\myscript.php on line 33

私が使用しているSQLユーザーは、PHPコードでハードコーディングされていますが、そうではありませんSYSTEM@localhost。SYSTEMは、Apacheが実行されているWindowsアカウントのようです。(管理者アカウントからApacheを起動すると、メッセージがに変わりますAdministrator@localhost。)

デフォルトのユーザー(名前は'')がSQL-Serverで削除されました。この空のユーザーが存在する場合、PHP 5.2はデータベースに正常に接続しますがmysql_select_db、権限のためにデータベースの選択()に失敗します。

4

2 に答える 2

2

sql.safe_mode(PHPセーフモードではない)がでオンなっているphp.ini場合、PHPは常にスクリプト所有者を使用してSQLサーバーに接続し、で指定されたユーザーではありませんmysql_connect()

safe_mode私はプロパティを混同しsql.safe_mode、構成中に6時間かかりました!

答えはここで見つかりました:http ://www.php.net/manual/de/ref.mysql.php#72632

于 2011-02-10T15:10:04.573 に答える
0

問題は、の適切なユーザー名とパスワードを指定していないことですmysql_connectGRANTそれらを空白のままにする(そしてPHPにデフォルトユーザーを使用させる)代わりに、 (またはphpMyAdminまたは他の管理クライアント)を使用してMySQLに追加された実際のユーザー名とパスワードを指定します。

パスワードなしの認証を許可することは、大したことではありません。パスワードなしで管理者アクセスを許可することは、まったく恐ろしいことです。代わりに、すべてのプログラムに対して制限付きのユーザーアカウントを作成してください。どうしても必要な場合にのみ特権アカウントを使用してください...

于 2011-02-10T15:04:38.760 に答える