2017-01-20 7 views
0

ではありません。まず、インデックスページのソースコードにMySQLパスワードが表示されていないことを確認しています。私は、必要な情報を持つ "mysql.conf"ファイルを作成すれば十分であると判断しました。MySQL接続のハードコードされたユーザ/パス作業ですが、ファイルからの文字列は

ここでは、コード、pre-confファイルのセクションです。これは何の問題もなく働いた:ここでは、

$dbhost = "mysql.host.com"; 
$dbuser = "username"; 
$dbpass = "password"; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 

今ある設定ファイルの内容(mysql.conf):

mysql.host.com 
username 
password 

とコードに対応する変更...

$dbConfig = file("./config/mysql.conf"); 
$dbhost = $dbConfig[0]; 
$dbuser = $dbConfig[1]; 
$dbpass = $dbConfig[2]; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 

しかし、設定ファイルを使用するための変更により、MySQL接続が失敗し、このエラー応答を返します:

"接続できませんでした:ユーザー 'username'@'chain-lightning.dreamhost.com'(パスワード:はい)のアクセスが拒否されました"

私は何が欠けていますか?私は、構成ファイルのテキストが静的な文字列を使用したときと同じであることを三重にチェックしました。ありがとう!

+0

最初のファイル機能でFILE_IGNORE_NEW_LINESフラグを使用することができ、PHPのコードは、ページのソースコード –

+0

に表示されません、あなたは定数を定義したい場合は、httpを使用することができます。 //php.net/manual/en/function.parse-ini-file.php定数を定義するためのリンク –

+0

mysql_は親切にmysqli_またはPDOを使用します –

答えて

1

あなたが考えているように、ファイルからデータを取得していることが主な原因です。あなたのすべての値は追加の改行値で追加されます。 http://php.net/manual/en/function.file.php

から

は、アレイ内のファイルを返します。配列の各要素は、ファイル内の行である に対応しており、改行は引き続き添付されています。

変数にトリム関数を使用すると、正常に動作します。

$dbConfig = file("./config/mysql.conf"); 
$dbhost = trim($dbConfig[0]); 
$dbuser = trim($dbConfig[1]); 
$dbpass = trim($dbConfig[2]); 

$conn = mysql_connect($dbhost, $dbuser, $dbpass); 

またはあなたがすべての

$dbConfig = file("./config/mysql.conf", FILE_IGNORE_NEW_LINES); 
$dbhost = $dbConfig[0]; 
$dbuser = $dbConfig[1]; 
$dbpass = $dbConfig[2]; 

$conn = mysqli_connect($dbhost, $dbuser, $dbpass); 
+0

良い点!私は家に帰るときにこれを試してみる。私はconfig.phpファイルを使用し、私の変数を定義することに頼っていました。これで問題が解決したら、私はこの答えを受け入れます。 ありがとうございました! –

関連する問題