从文本文件中运行PHP代码

3
如果我在我的Web服务器上有一个文本文件,其中包含完整的PHP代码,所有格式都正确,那么我可以使用PHP fopen来读取文本文件并将PHP的输出回显到浏览器中。也就是说,运行存储在文本文件中而不是硬编码的PHP代码?谢谢。

为什么你想要这样做呢?我认为你做不到。 - Freddie
如果文件包含常规的PHP开头标签,那么在包含它时该文件将被执行。如果没有,你仍然可以使用eval()函数……但不要忘记:eval()是邪恶的! - Paul
为什么苹果不允许这样做呢?这样可以让网页开发人员在iPhone上测试代码(模拟真实的Web服务器)。 - benhowdle89
1
@jakenoble - 很难从 OP 中确定文件中是否存在 <?php... 我会假设这是“完整的 PHP 代码”的要求。 - Mark Baker
1
+1 这是一个奇怪的问题,但了解答案可能会很有用。更多地了解php如何处理包含永远不是坏事。有时您必须修改或扩展现有应用程序,并告诉老板您不会做这项工作,因为原始方法不好是不明智的!在SO上到处遇到“不要这样做”和“你为什么需要这个?”的回答只是让人烦恼。只需在有效的答案中包含您的警告,以便人们知道使用您的解决方案时所承担的风险。 - Oliver A.
显示剩余8条评论
2个回答

8
这是完全可以做到的(毕竟它只是另一个文件),虽然我更倾向于直接包含它,而不是搞弄 fopen/eval 等等。(注意:当然,该文件必须是“完整的”,并以“<?php”等开头,以便包含正常工作。)
然而,如果将文件命名为 .txt 扩展名,我会非常谨慎,因为这意味着如果存在于公共 HTTP 文档区域中,浏览器可以直接浏览此文件的内容。因此,为什么不将数据写入 .php 文件 - 这将不比 .txt 文件更困难,并且具有这样的优势,即如果有人尝试访问它,它总是由 Web 服务器解析。

我没意识到我可以这样做 :) 所以我可以让用户编写他们的 PHP 代码,然后将整个 PHP 文件发送到我的 Web 服务器? - benhowdle89
2
@benhowdle89 - 这个应用程序会让人们编写PHP吗?(如果是这样,那将是一个几乎无法计算的巨大安全风险。)不管怎样,这里没有什么本质上聪明的东西,尽管你显然需要一个脚本来拾取文件并将它们存储在一个合理的位置等。 - John Parker
你能解释一下这为什么是一个风险吗?最好现在知道 :) - benhowdle89
1
如果您允许用户输入自己的PHP代码并在您的服务器上执行它,那么它显然可以做任何本地脚本可以做的事情,因为没有现实的方法来创建一个“沙盒”环境来运行这些东西。我会考虑更新您的新问题,以了解您具体计划做什么。 - John Parker

2
您可以按照您建议的方式使用fopen读取文件,然后使用eval执行读取的字符串。我不建议这样做。请尝试另一种解决实际问题的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接