문제
에 따르면 PDO 문서, 데이터베이스 로그인 세부 정보를 php.ini에 PHP 파일에서 멀리 떨어 뜨릴 수 있습니다 (예 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 (이름이 될 수 있습니다. pdo.dsn.name
php.ini), 사용자 이름 및 비밀번호에 정의됩니다.
다른 팁
DB 사용자 이름과 비밀번호를 환경 변수에 저장할 수 있으며 PHP 스크립트 내에서 사용할 수 있습니다. $_ENV
슈퍼 글로벌.
AFIACT, php.ini에서 환경 변수를 설정할 수는 없지만 .htaccess 파일을 포함하여 Apache 구성을 설정할 수 있습니다. 예를 들어
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
그런 다음 PHP에서 사용할 수 있습니다.
$db = new PDO('mydb',$_ENV['mysql_username'],$_ENV['mysql_password']);
DSN을 환경 변수로 배치하여 모든 것을 정리할 수도 있습니다.
제휴하지 않습니다 StackOverflow