CodeIgniter,在控制器中获取当前 URI



我的任务是使用 PHP 4 将 2.0x CodeIgniter 安装升级到使用 PHP 7 和 Nginx 的 3.0.6 安装。我一直在遵循记录的升级过程。

我遇到的问题是$this->uri的值,现有页面现在看起来像垃圾。

没有其他逻辑的代码:

require("App_Controller.php");
class StaticContent extends AppController {
  function index() {
     error_log('A>>>' . serialize($this->uri->uri_string()) . '<<<');
  }
  function _remap() {
    // These two lines added for analysing issue
    $this->index();
    return;
    // TODO: Temporary - Hard coded splash page to use an empty template
    if($this->uri->segment(1) === false && $pageData = $this->contentmodel->get(NULL, -1, 'empty')) {
      $this->_locale_splash();
    }
    elseif(substr($this->uri->uri_string(), -1, 1) != '/') {
      // Add trailing slash if not present
      redirect2($this->uri->uri_string() . '/');
    }
    // other code omitted
  }
}

日志中的文本输出:

"PHP message: A>>>s:0:"";<<<" while reading response header from upstream, client: 10.0.2.2, server: _, request: "GET /2017/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "localhost:8080"

我不知道该如何看待s:0:"";值或我应该做些什么来解决这个问题?

根据@Sparky的建议,http://localhost:8080/2017/的var_dump($this->uri)输出(CodeIgniter 存在于 2017 年路径中(,给出:

object(CI_URI)#6 (6) {
  ["keyval"]=>
  array(0) {
  }
  ["uri_string"]=>
  string(0) ""
  ["segments"]=>
  array(0) {
  }
  ["rsegments"]=>
  array(2) {
    [1]=>
    string(13) "staticcontent"
    [2]=>
    string(5) "index"
  }
  ["_permitted_uri_chars":protected]=>
  string(14) "a-z 0-9~%.:_-"
  ["config"]=>
  &object(CI_Config)#3 (3) {
    ["config"]=>
    &array(55) {
      ["OT_front_news_count"]=>
      int(8)
      ["OT_show_countdown"]=>
      bool(true)
      ["OT_show_newsletter"]=>
      bool(false)
      ["OT_event_date_en"]=>
      string(18) "August 5–7, 2017"
      ["OT_event_date_fr"]=>
      string(18) "5 – 7 août 2017"
      ["OT_event_year"]=>
      string(4) "2016"
      ["site_name"]=>
      string(14) "MySite 2017"
      ["base_url"]=>
      string(26) "http://localhost:8080/2017"
      ["index_page"]=>
      string(0) ""
      ["uri_protocol"]=>
      string(11) "REQUEST_URI"
      ["url_suffix"]=>
      string(0) ""
      ["language"]=>
      string(7) "english"
      ["charset"]=>
      string(5) "UTF-8"
      ["enable_hooks"]=>
      bool(false)
      ["subclass_prefix"]=>
      string(3) "MY_"
      ["composer_autoload"]=>
      bool(false)
      ["permitted_uri_chars"]=>
      string(14) "a-z 0-9~%.:_-"
      ["allow_get_array"]=>
      bool(true)
      ["enable_query_strings"]=>
      bool(false)
      ["controller_trigger"]=>
      string(1) "c"
      ["function_trigger"]=>
      string(1) "m"
      ["directory_trigger"]=>
      string(1) "d"
      ["log_threshold"]=>
      int(0)
      ["log_path"]=>
      string(0) ""
      ["log_file_extension"]=>
      string(0) ""
      ["log_file_permissions"]=>
      int(420)
      ["log_date_format"]=>
      string(11) "Y-m-d H:i:s"
      ["error_views_path"]=>
      string(0) ""
      ["cache_path"]=>
      string(0) ""
      ["cache_query_string"]=>
      bool(false)
      ["encryption_key"]=>
      string(0) ""
      ["sess_driver"]=>
      string(5) "files"
      ["sess_cookie_name"]=>
      string(10) "ci_session"
      ["sess_expiration"]=>
      int(7200)
      ["sess_save_path"]=>
      NULL
      ["sess_match_ip"]=>
      bool(false)
      ["sess_time_to_update"]=>
      int(300)
      ["sess_regenerate_destroy"]=>
      bool(false)
      ["cookie_prefix"]=>
      string(0) ""
      ["cookie_domain"]=>
      string(0) ""
      ["cookie_path"]=>
      string(6) "/2016/"
      ["cookie_secure"]=>
      bool(false)
      ["cookie_httponly"]=>
      bool(false)
      ["standardize_newlines"]=>
      bool(false)
      ["global_xss_filtering"]=>
      bool(false)
      ["csrf_protection"]=>
      bool(false)
      ["csrf_token_name"]=>
      string(14) "csrf_test_name"
      ["csrf_cookie_name"]=>
      string(16) "csrf_cookie_name"
      ["csrf_expire"]=>
      int(7200)
      ["csrf_regenerate"]=>
      bool(true)
      ["csrf_exclude_uris"]=>
      array(0) {
      }
      ["compress_output"]=>
      bool(false)
      ["time_reference"]=>
      string(5) "local"
      ["rewrite_short_tags"]=>
      bool(false)
      ["proxy_ips"]=>
      string(0) ""
    }
    ["is_loaded"]=>
    array(0) {
    }
    ["_config_paths"]=>
    array(1) {
      [0]=>
      string(31) "/var/www/html/2017/application/"
    }
  }
}

根据您对http://localhost:8080/2017/ var_dump($this->uri)...

object(CI_URI)#6 (6) {
  ["keyval"]=>
  array(0) {
  }
  ["uri_string"]=>
  string(0) ""
  ["segments"]=>
  array(0) {
  }
  ....

。URI 中没有段(2017/ 之后没有任何段(,因此 URI 字符串的预期结果""

<小时 />

根据文档:

uri_string()

返回:URI 字符串

返回类型:字符串

返回包含完整 URI 的字符串。例如,如果这是您的完整网址:

http://example.com/index.php/news/local/345

该方法将返回以下内容:

news/local/345

请注意http://example.com/index.php/不是 URI 字符串的一部分。

最新更新