8

对于我网站的一部分,我需要能够使用 php.ini 将 php 代码写入文件。例如:

$filename = "RtestR.php";
$ourFileName =$filename;
$ourFileHandle = fopen($ourFileName, 'w');



$written =  "
    <html>
    <body>
    <?php
    echo \"I like the color \".$_SESSION['color'].\"!!!!\";
    </body>
    </html>

";

fwrite($ourFileHandle,$written);

fclose($ourFileHandle);

但是,它没有创建文件,而是抛出了这个错误:

解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,在第 14 行需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING

我做错了什么以及将php代码写入文件的正确方法是什么?
编辑:
我想我可能需要让自己更清楚......我希望在加载新创建的文件时确定 SESSION。从技术上讲,我不想在此页面上获得会话,而是在我正在创建的页面上!我想将代码写入文件,而不是代码的输出!

4

6 回答 6

9

终于想通了!我需要逃避我的$符号!像这样:

$written =  "
<html>
<body>
<?php
echo \"I like the color \".\$_SESSION['color'].\"!!!!\";
</body>
</html>

";

不敢相信我没想到这一点;)
谢谢大家!

于 2013-06-10T18:50:10.157 回答
1

你可以这样做: -

    <?php

    $filename = "RtestR.php";
    $ourFileName =$filename;
    $ourFileHandle = fopen($ourFileName, 'w');



    $written =  "<html>
                    <body>          
                        I like the color ".$_SESSION['color']."!!!! 
                    </body>
                </html> ";

    fwrite($ourFileHandle,$written);

    fclose($ourFileHandle);

?>
于 2013-06-10T17:58:07.710 回答
1
$fp = fopen("test.php", "w");
$string = '<html>
    <body>
    <?php
    echo "I like the color ".$_SESSION[\'color\']."!!!!";
    ?>
    </body>
    </html>';

fwrite($fp, $string);

fclose($fp);
于 2013-06-10T17:59:07.100 回答
1

在这种情况下提及php 的 HEREDOC似乎很相关,例如:

<?php
$filename      = 'RtestR.php';
$ourFileName   = $filename;
$ourFileHandle = fopen($ourFileName, 'w');

$write =  <<<"FILE_CONTENTS"
<p>I like the color <?={$cleanSessionVars[ 'color' ]};?>.</p>

FILE_CONTENTS;

fwrite($ourFileHandle, $write);

fclose($ourFileHandle);
于 2017-05-05T06:09:26.497 回答
0

您缺少结束 PHP 标记?>

考虑一下,你正在做的事情可能不是最好的方法。我能想到的用 PHP 写出 PHP 文件的唯一用例是一些已编译的模板代码或奇怪的缓存。

于 2013-06-10T17:53:59.047 回答
0

你好 pattyd:很高兴见到你 :) +不要投票/接受这个答案:

我建议以这种方式简化:

$written =  "
    <html>
        <body>
           I like the color \" $_SESSION['color'] \" !!!!
        </body>
    </html>
";
于 2013-06-10T18:01:19.907 回答