문제

에 따르면 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을 환경 변수로 배치하여 모든 것을 정리할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top