代码之家  ›  专栏  ›  技术社区  ›  Zoe

为什么我不能在XAMPP的REQUEST或INCLUDE语句中使用变量?

  •  0
  • Zoe  · 技术社区  · 17 年前

    在清理一些旧的PHP脚本时,当我尝试使用变量时,我注意到了一些使用require/include语句的奇怪行为。

    在Live服务器上,以下代码工作正常。

    <?php
    $test = "http://localhost/elearning/trunk/mypage.php";
    require "$test";
    ?>
    

    …但是在我的XAMPP安装((基本包)版本1.6.7)上,我收到以下错误:

    警告:require()[function.require]:在服务器配置中的第22行C:\documents and settings\username\desktop\xampp-win32-1.6.7\xampp\htdocs\elearning\trunk\test.php中禁用了URL文件访问。

    警告:需要( http://localhost/elearning/trunk/mypage.php )[函数.要求]:未能打开流:在第22行的c:\documents and settings\username\desktop\xampp-win32-1.6.7\xampp\htdocs\elearning\trunk\test.php中找不到合适的包装器

    致命错误:require()[函数.要求]:无法打开必需的' http://localhost/elearning/trunk/mypage.php '(在第22行的c:\documents and settings\username\desktop\xampp-win32-1.6.7\xampp\php\pear\')中包含“(在c:\documents and settings\username\desktop\xampp-win32-1.6.7\xampp\htdocs\elearning\trunk\test.php中)

    如果我复制+粘贴 http://localhost/elearning/trunk/mypage.php (直接从错误中)将mypage.php加载到浏览器中。这是我的配置错误,还是我的方法错误?

    4 回复  |  直到 17 年前
        1
  •  3
  •   Tyler Carter    17 年前

    由于安全原因,不能在某些服务器上使用以http://开头的路径。您要使用的是目录路径。

    您可以通过如下操作获取当前目录路径
    echo $_SERVER['DOCUMENT_ROOT'];

    这将为您提供服务器根文件夹中的目录路径。这是用于包含/需要内容的路径。


    如果你不太明白,试试这个。

    有两种类型的路径:

    万维网路径:
    http://example.com/directory/file.php

    服务器目录路径:
    /主页/usr/www/site/html/

    服务器目录路径是文件位于服务器硬盘上的位置。就像你的电脑硬盘一样,它永远不会改变,除非你移动文件。另一方面,万维网路径(每个人都用来访问您的网站的路径)可以根据您使用的域、文档根目录指向的位置、mod重写等等进行更改。

    注意:文档根目录是服务器提供文件的最上面的目录。因此,如果您的文档根目录中有index.php,它会像这样出现在Web上: http://example.com/index.php .

    当PHP查找文件时,它使用服务器目录路径,因为它在服务器上运行。当从用户计算机运行的javascript想要查找一个文件时,它使用万维网路径来访问它,因为它没有从服务器访问它。

    我真的希望在那里的某个地方,有些事情是有意义的。

        2
  •  1
  •   lock    17 年前

    尝试要求“./mypage.php” 不是整个确切的目录

        3
  •  1
  •   Mike Trpcic    17 年前

    当你使用这样的URL符号时,php不够聪明,无法知道你是从同一个服务器上包含的,所以它认为你是从一个单独的服务器上获取文件(这可能很危险)。

    您的服务器配置设置为不允许加载这些外部文件(从错误消息“在服务器配置中禁用了URL文件访问”)中可以明显看出),因此它失败了。

    因为您在同一台服务器上,所以可以简单地使用相对路径,例如:

    require_once 'mypage.php'
    
        4
  •  0
  •   alex    17 年前

    不要使用这样的路径…使用相对路径或绝对路径。

    例子

    require 'mypage.php'