1

ファイルにphpスクリプトを書き込もうとしています.それで解析エラーが発生するはずでした.phpコードをphp変数に割り当てて、コードに書き込めるようにしてください。

<?php

$myFile = "testFile1.php";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "<?php some php code with functions ?>";
fwrite($fh, $stringData);
fclose($fh);

?>
4

5 に答える 5

3

ファイルに書き込みたい文字列を一重引用符で囲みます。それ以外の場合は解釈されます。

$stringData = '<?php some php code ?>';

または、コードをエスケープすることもできます。詳細については、php マニュアルの「文字列」の章を参照してください: http://php.net/manual/en/language.types.string.php

于 2012-12-12T19:58:22.177 に答える
2

一重引用符を使用します。

<?php

$myFile = "testFile1.php";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = '<?php some php code ?>';
fwrite($fh, $stringData);

fclose($fh);

?>
于 2012-12-12T19:58:55.177 に答える
1

例えば:

    <?php

    $myFile = "testFile1.php";
    $fh = fopen($myFile, 'w') or die("can't open file");
    $var1 = 'value1';
    $var2 = 'value2';

    $stringData =
        '<?php $var1 = ' . $var1 . ';
        $var2 = ' . $var2 . ';
        do_something($var1); ?>';

    fwrite($fh, $stringData);

    fclose($fh);

?>

したがって、一重引用符を使用して、php が vars を php vars 自体として解析しないようにし、連結を使用して var 値をファイルに入れます。場合によっては、おそらくvar_export($var, true)関数を使用することもあります。

于 2012-12-12T19:59:33.370 に答える
0

問題を分割します。JavaScriptの場合と同じように、<\/script>またはを使用します。PHPの場合"<"+"/script"は、を記述できます"?".">"

これにより、?>トークンが認識されなくなります。

さらに、NOWDOCは、PHPコードを文字列に入れることを目的としています。

$phpcode = <<<'END'
Blah blah blah
This is code with $variables, functions() and {$complex['syntax']}
END;
于 2012-12-12T19:59:46.413 に答える
0

なぜこれをしたいのですか?とにかく、あなたはできません。ただし、PHP に身代金の一時ファイル名を要求し、そのファイルを作成し、そこにコードを記述してから、ファイルを記述することができincludeます。

また、一重引用符を使用する必要があります。そうしないと、PHP が解釈を試みます。

$phpCrapThatWillMakeSiteVulnerableToHacking = '<?php echo "Welcome to my easially hackable website. Now I will execute $_POST["code"]!"; ' . $_POST["code"] . ' ?>';
$fileName = tempnam("/tmp", "derp");
$handle = fopen($fileName, "w");
if ($handle === FALSE)
{
    die("I derped");
}
fwrite($handle, $phpCrapThatWillMakeSiteVulnerableToHacking);
fclose($handle);
include($fileName);
于 2012-12-12T19:58:14.740 に答える