Php.ini PDO bilgilerini saklama

2 Cevap php

Göre PDO documentation, uzakta php dosyası (örnek 3) dan, php.ini veritabanı oturum açma bilgilerini saklayabilirsiniz. Ama bu sadece veritabanı ve ana kullanıcı adı ve şifre saklamak için nasıl açıklamak değildir. Bunu nasıl yapacaksın?

Bu belgelerde kullanılan yöntem:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"

Ben host kullanıcı adı ve şifre ekleyerek denedim, ama o sevmez: kullanıcı adı ve şifre ile, ve gerçek bir adresi olarak yalnızca bir kullanıcı adı ile bir adres tanımıyor:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=username:password@localhost"

Ben de ayrı bir argüman olarak kullanıcı adı ve şifre koyarak denedim, ama o not.s yok

[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"

2 Cevap

Belgelere göre, bu mümkün değildir. Ve muhtemelen istedim. (A pdo.dsn.name php.ini tanımlanan bir isim olabilir) bir DSN, bir kullanıcı adı ve şifre: Eğer PDO __construct() yöntemi bakarsanız, bu 3 argümanları alır .

Sen $_ENV süper küreseli içinde PHP komut dosyası içinde o zaman mevcut olan bir ortam değişkeni içinde DB kullanıcı adınızı ve şifrenizi saklayabilirsiniz.

AFIACT, php.ini bir ortam değişkeni ayarlamak değil, ancak bir. Htaccess dosyası da dahil olmak üzere, apache yapılandırma ayarlayabilirsiniz. Örneğin

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

Sonra PHP kullanabilirsiniz:

$db = new PDO('mydb',$_ENV['mysql_username'],$_ENV['mysql_password']);

Ayrıca Hepsini bir arada tutmak için bir ortam değişkeni olarak DSN koyabilirsiniz.