php __FILE__无法正常工作

时间:2013-12-11 05:44:09

标签: php include require dirname

我正在尝试从另一个php文件A.PHP加载一个php文件B.PHP,另外我想通过$ _GET发送一个变量。两个文件都存储在同一目录中。我试过几种方法:

第一) 直接写在我的文件上:

require (__FILE__)."\b.php?action=1";

执行回显的结果是:C:\ xampp \ htdocs \ pfc \ html \ a.phpb.php?action = 1,所以INCORRECT!

然后我尝试了:

require (__FILE__)."\..\b.php?action=1"; INCORRECT again

第二) 在我设置的不同PHP上:

define('MAINDIR',dirname(__FILE__) . '\\');
define('DL_DIR',MAINDIR . 'pfc\\html\\');   // Also tried with a normal '/'

然后在我的文件中我就这样做了:

require DL_DIR."b.php?action=1";  I also tried with include, but I guess this has nothing to do.

在这种情况下,如果我做了回音,我得到:C:\ xampp \ htdocs \ pfc \ html \ b.php,所以正确!

但是,当我运行程序时,我收到下一个错误:

警告:require(C:\ xampp \ htdocs \ pfc \ html \ b.php?action = 1):无法打开流:C:\ xampp \中没有此类文件或目录第101行的htdocs \ pfc \ html \ a.php

警告:require():无法打开'C:\ xampp \ htdocs \ pfc \ html \ b.php?action = 1'以包含(include_path ='。;; C:\ xampp第101行的C:\ xampp \ htdocs \ pfc \ html \ a.php中的\ php \ PEAR')

显然它无法在文件中找到文件。所以我再试一次'.. \'这个版本......错了!

第3步)在等式中添加realpath

require realpath(dirname(__FILE__)."\b.php?action=1");

而且,我得到了:

警告:require():第101行的C:\ xampp \ htdocs \ pfc \ html \ HTML_menu_supervisor.php中的文件名不能为空

警告:require():在C:\ xampp \ htdocs \ pfc \ html \中打开''以包含(include_path ='。; C:\ xampp \ php \ PEAR')失败第101行的HTML_menu_supervisor.php

我真的不知道发生了什么。请有人帮帮我!并提前感谢: - )

3 个答案:

答案 0 :(得分:1)

据我所知,您无法通过requireinclude传递参数。因此,我相信您的require实际上正在寻找一个不存在的文件(因为您可能没有名为b.php?action=1的文件。

您可以设置所需的任何变量,并在require d文件中引用它们(假设它们在相同的范围内)。

答案 1 :(得分:0)

您无需获取包含参数。

如果你的网址看起来像这样

localhost/myfunction.php?action=1

myfunction.php:

    require (__DIR__)."\..\b.php";

您可以包含您的文件,它将获得开箱即用的GET变量。

包含是您所包含文件的复制和粘贴。

所以你的b.php应该是这样的:

$allowedGetValues = array(1,2,3,4);


if(isset($_GET['action']) && array_key_exists($_GET['action'],$allowedGetValues) ){
    .. 
}

答案 2 :(得分:0)

你必须使用include或require函数,如下所示 -

include('b.php');
or
require('b.php');