質問
PDOドキュメントによると、データベースログインを保存できます。 phpファイルから離れたphp.iniの詳細(例3)。ただし、ユーザー名とパスワードの保存方法については説明せず、データベースとホストについてのみ説明します。どうしますか?
これはドキュメントで使用されている方法です:
[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
ホストにユーザー名とパスワードを追加しようとしましたが、ユーザー名とパスワードの間では気に入らず、ユーザー名のみが実際のアドレスとして認識されることはありません:
[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=username:password@localhost"
また、ユーザー名とパスワードを別々の引数として配置しようとしましたが、そうではありません。
[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;username:username;password:secret"
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;uid:username;pwd:secret"
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;UID:username;PWD:secret"
解決
ドキュメントによると、これは不可能です。そしておそらく望んでいません。 PDO __ construct()
メソッドを見ると、3つの引数が必要です。DSN(phpで定義されている pdo.dsn.name
の名前)。 ini)、ユーザー名とパスワード。
他のヒント
DBユーザー名とパスワードを環境変数に保存できます。環境変数は、 $ _ ENV
スーパーグローバルのPHPスクリプト内で使用できます。
AFIACT、php.iniから環境変数を設定することはできませんが、.htaccessファイルを含むapache configに設定することはできます。例:
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
次に、使用できるPHPで:
$db = new PDO('mydb', DBユーザー名とパスワードを環境変数に保存できます。環境変数は、 $ _ ENV
スーパーグローバルのPHPスクリプト内で使用できます。
AFIACT、php.iniから環境変数を設定することはできませんが、.htaccessファイルを含むapache configに設定することはできます。例:
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
次に、使用できるPHPで:
<*>
DSNを環境変数として配置して、すべてをまとめることもできます。
ENV['mysql_username'], DBユーザー名とパスワードを環境変数に保存できます。環境変数は、 $ _ ENV
スーパーグローバルのPHPスクリプト内で使用できます。
AFIACT、php.iniから環境変数を設定することはできませんが、.htaccessファイルを含むapache configに設定することはできます。例:
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
次に、使用できるPHPで:
<*>
DSNを環境変数として配置して、すべてをまとめることもできます。
ENV['mysql_password']);
DSNを環境変数として配置して、すべてをまとめることもできます。