我一直在使用Codeigniter在本地开发自定义CMS,而且我已经到了需要将其上传到登台服务器以进行更多测试的地步。
除了使用窗口小部件系统的网站的侧边栏部分外,一切正常。我最初认为这只是PHP版本之间的差异,因为我在本地运行5.4.4并且服务器是5.3。将服务器升级到5.4.7后,侧边栏仍未显示。我没有错误,只显示任何内容。
这是Widget库代码:
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Widgets {
private $_ci;
protected $parser_enable = FALSE;
public function __construct() {
$this->widgets();
}
public function widgets(){
$this->_ci =& get_instance();
}
public function build($view,$data=array()){
$view = get_class($this).'/'.$view;
$subdir = '';
if (strpos($view, '/') !== FALSE)
{
// explode the path so we can separate the filename from the path
$x = explode('/', $view);
// Reset the $class variable now that we know the actual filename
$view = end($x);
// Kill the filename from the array
unset($x[count($x)-1]);
// Glue the path back together, sans filename
$subdir = implode($x, '/').'/';
}
$widget_view = APPPATH.'widgets/'.$subdir.'views/'.$view.EXT;
if(file_exists($widget_view)){
$widget_view = '../widgets/'.$subdir.'views/'.$view.EXT;
if($this->parser_enable){
$this->_ci->load->library('parser');
return $this->_ci->parser->parse($widget_view,$data,TRUE);
}
else{
return $this->_ci->load->view($widget_view,$data,TRUE);
}
}
return FALSE;
}
public function __get($var) {
static $ci;
isset($ci) OR $ci = get_instance();
return $ci->$var;
}
}
是否会跳出任何可能导致其无法显示的内容?
我是否应该考虑使其兼容,例如服务器模块?服务器上有什么可能影响这个?
编辑:
我的小部件位于以下路径中:
/public_html/application/widgets/recent_news/views/view.php
$widget_view = 'widgets/'.$subdir.'views/'.$view.EXT;
变量正在返回widgets/Recent_news/views/view.php
,该变量将传递给:
if(file_exists($widget_view)){
return $this->_ci->load->view($widget_view,$data,TRUE);
}
$ widget_view中的应用程序路径似乎在登台服务器上是正确的,因此file_exists()返回false并且不加载视图(无论如何都会有不正确的路径)。
我似乎无法让它读出正确的路径,有什么建议吗?
答案 0 :(得分:0)
如果是登台服务器,请进入php.ini文件并设置
error_reporting = E_ALL | E_STRICT
display_errors = On
这将输出它找到的任何错误,以便您可以调试它。
答案 1 :(得分:0)
结束只需要subdir = strtolower($subdir);
感谢大家的帮助