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;
}
}
?>
在events.php文件中
<?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;
}
}
在测试localhost(xampp)上的代码时,代码正在运行并且需要。正在包含页面。但是当尝试使用大型岩石服务器时,输出将会显示为
Fatal error: Call to a member function segment() on a non-object in /home/public_html/events.php on line 2
造成这种差异的原因是什么?如何让它在bigrock服务器上运行?
答案 0 :(得分:1)
我不知道为什么此代码在XAMPP中有效,但Bigrock服务器报告的致命错误是正确的。您的代码中存在错误,因为$url
无法从包含文件访问,因为此变量和包含的文件位于不同的范围内。所有include指令仅限于其本地范围。现在有一些帮助:您可以在包含之前以多种方式手动导入变量 - 例如使用extract函数。