【问题标题】:Call PHP file outside wwwroot folder (Windows host, Arvixe)在 wwwroot 文件夹外调用 PHP 文件(Windows 主机,Arvixe)
【发布时间】:2014-12-28 10:26:21
【问题描述】:
快速解决方案(感谢下面汤姆的回答,阅读他的完整解释):在 webroot 目录中创建一个新的 php 文件;假设 temp.php。从那里,使用 include 或 request 调用 webroot 之外的 test.php 文件。
index.html -> temp.php -> test.php
- 我正在使用 javascript 来访问 temp.php,但也可以使用 href。
- 在 temp.php 中,我使用了:include dirname(__FILE__)。 '/../test.php';
- 就是这样,test.php 不能通过 URL 直接访问。如果您想从外部访问 webroot 中的文件,请使用以下内容: header("location:".dirname(__FILE__).'/../wwwroot/index.php');请参阅:http://stackoverflow.com/questions/13550471/php-include-file-in-webroot-from-file-outside-webroot,我在哪里找到 FILE/DIR 东西

原问题:
我有一个托管在 Arvixe 上的网站(Windows 托管,而不是 Linux)。
在我的域目录中,我有一个 test.php 文件和 wwwroot 文件夹。
在 wwwroot 文件夹中,我有一个 index.html 文件。

从 index.html 文件中,我只想要一个调用 test.php 文件的简单链接/按钮。我不希望用户直接通过 URL 访问 php 文件(这就是我将其放在根目录之外的原因),但我希望 index.html 等其他文件能够访问它。我已经尝试了 web.config 和 .user.ini 的安全性(没有工作),但我认为如果这有效,那么安全性应该没问题。

  • 我尝试了 href="../test.php",但它不起作用(404 - 找不到文件或目录)
  • test.php 的权限与 wwwroot 相同(通过 cp 门户)
  • 我不想包含php文件,我想单独调用和运行它
  • 我已经查看了 stackoverflow 中的所有相关帖子两天,但似乎没有任何效果
  • 如果您的建议是使用文件的完整路径或创建虚拟目录,请提供一个示例。因为我都试过了,都没有运气
  • 我还读到您需要 php 脚本才能访问根以外的 php 文件,但不知道如何调用外部文件。我已经尝试过一次,但得到了 404 异常。如果能成功就太好了

有没有人有一个简单的方法来完成这个? (尤其是使用 Windows Arvixe 托管的任何人)。我觉得这里应该有一个简单的答案):感谢您阅读本文,非常感谢您的任何建议

【问题讨论】:

    标签: php html security document-root windows-hosting


    【解决方案1】:

    某些 PHP 脚本必须可通过网络访问。如果您不希望您的主 PHP 脚本可通过 Web 访问,您仍需要另一个可通过 Web 访问的 PHP 脚本来调用主脚本。除非您引入 SSI 等其他技术,否则无法解决此问题。

    如果您使用 Windows 来满足您的要求,这没有区别。

    【讨论】:

    • 好的,假设我在 index.html 中添加 php 脚本来调用根目录之外的 test.php。我该怎么做?这段代码会是什么样子?
    • 您不会在 index.html 中添加 PHP 脚本。您创建了一个名为 index.php 的新文件,这是您的默认文件。这将导致 index.php 文件在发送之前由您的 Web 服务器处理。您可以使用requireinclude。有关示例,请参阅tutorialspoint.com/php/php_file_inclusion.htm
    • 如果我想用 POST 传入数据(如表单数据),然后用 GET 在 test.php 文件中处理它。在 index.php 文件中使用 require/include 是否仍然可行?
    • 当然。请参阅 php.net/manual/en/reserved.variables.get.phpphp.net/manual/en/reserved.variables.post.php 。此外,在 PHP 文件中 included 或 required 与调用它们的文件在同一范围内,但您可以在任何地方访问 $_GET 和 $_POST 所以除非您重新分配了值,否则这无关紧要到其他变量,在这种情况下,由于它们在同一范围内,它也无关紧要。
    • JavaScript 在客户端运行。您只能使用 JavaScript 调用 Web 可访问的 PHP 文件(如 index.php)。然后,可通过 Web 访问的脚本可以使用 requireinclude 调用不可通过 Web 访问的脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多