2012-05-05 21 views
0

インストールファイルを作成しようとしていますが、文字列を使用して設定ファイルを作成していますが、構文エラー、予期しないT_CONSTANT_ENCAPSED_STRING ...文字列concanination行でこのエラーが発生する構文エラー:予期しない構文エラーT_CONSTANT_ENCAPSED_STRING in

$tempcon = ' 
<?php 
// Give Usage string for Config File 
if(isset($_GET["gimi"])) { 
    die('"' . str_replace('\\','\\\\',__FILE__) . '"'); // <--- The error is on this line! 
} 
$dbhost = "'. $_POST["dbhost"] .'";    // Database Host Address 
$dbname = "'. $_POST["dbname"] .'";    // Database Name 
$dbuser = "'. $_POST["dbuser"] .'";    // Database Username 
$dbpass = "'. $_POST["dbpass"] .'";    // Database Password 

?>'; 

私は間違っていますか?あなたは、文字列で'をエスケープする必要があり、事前に

おかげで、

ロバート

+1

LOL、私もすべてそのPHPブロックは、変数に置かれていることを気づかなかった、私はエラー行のカウントスラッシュと単一引用符あまりにも忙しかった:D –

答えて

2

+0

あなたはより具体くださいことはできますか? – RobertH

+0

@RobertHは 'die'の中に' ''があり、それらをエスケープする必要があります – Musa

+0

ありがとうございました – RobertH

0

最後の4つの文字列割り当てが壊れているようです。代わりにheredoc/nowdocを使用して問題を回避することをお勧めします。

編集:それ以外では、phpを使って、ユーザーが制御する別のデータベースに動的に接続するようです。これは悪臭が...あなたが何をしようとしているかを説明できますか?それを達成するにはよりよい方法が必要です。

+0

私は、ユーザからの動的入力を使用するインストールスクリプトを書いています。 if(isset "protion – RobertH

0

あなたが(現在)取得している解析エラーは、配列インデックスの引用符が原因です。あなたのdie()も問題を引き起こしますが、Musaは指摘しています。より良い解決法:heredocを使用してください。

<?php 
$tempcon = <<<PHPCODE 
<?php 
// Give Usage string for Config File 
if(isset({$_GET["gimi"]})) { 
    die('"' . str_replace('\\','\\\\',__FILE__) . '"'); // <--- The error is on this line! 
} 
$dbhost = "'. {$_POST["dbhost"]} .'";    // Database Host Address 
$dbname = "'. {$_POST["dbname"]} .'";    // Database Name 
$dbuser = "'. {$_POST["dbuser"]} .'";    // Database Username 
$dbpass = "'. {$_POST["dbpass"]} .'";    // Database Password 

?> 
PHPCODE; 
関連する問題