Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一次使用include_时受影响的变量范围_Php_Scope - Fatal编程技术网

Php 一次使用include_时受影响的变量范围

Php 一次使用include_时受影响的变量范围,php,scope,Php,Scope,在events.php文件中 spl_autoload_register("auto"); function auto($class_name){ include_once($class_name.'.php'); } $url=new clean_url($_SERVER["REQUEST_URI"]); $c=1; //echo $url->segment(2); if(!$url->segment($c)){

在events.php文件中

    spl_autoload_register("auto");
    function auto($class_name){
        include_once($class_name.'.php');
    }

$url=new clean_url($_SERVER["REQUEST_URI"]);
    $c=1;
    //echo $url->segment(2);
    if(!$url->segment($c)){
           //include homepage
    }
    else{
        switch($url->segment($c)){
            case 'events':
            include_once($_SERVER['DOCUMENT_ROOT'].'/events.php');
            break;
            default:
            include_once('404.php');
            break;
        }
    }

?>

造成这种差异的原因是什么?我如何使它在bigrock服务器上工作?

我不知道为什么这段代码在XAMPP中工作,但bigrock服务器报告的致命错误是正确的。您的代码中有错误,因为无法从包含的文件访问
$url
,因为此变量和包含的文件在不同的范围内。所有include指令都仅限于其本地范围。现在有一些帮助:您可以通过多种方式在包含变量之前手动导入变量,例如使用函数。

您是否尝试过
print\r($url)
spl\u autoload\u register()
在无法注册autoload\u函数时应引发异常。在执行这些代码块之前,您是否绝对肯定没有在其他地方包含events.php?正如@KrishR提到的,
spl\u autoload\u register
应该在
开关
语句之前就已经抛出了一个错误。在localhost上,它使用print\r:clean\u url对象([path:clean\u url:private]=>/events)给出了它的提示但在服务器上没有输出coming@Bez:上面的代码在index.php文件中,我使用的地址是sitename.com/events/
<?php
if($url->segment($c+1)){
$e=$url->segment($c+1);
switch ($e) {
    case 'ecstasy':
        include_once($_SERVER['DOCUMENT_ROOT'].'temps/ecstasy.php');
        break;

    default:
        # code...
        break;
}
}
Fatal error: Call to a member function segment() on a non-object in /home/public_html/events.php on line 2