我的任务是使用PHP 7和Nginx将使用PHP 4的2.0x CodeIgniter安装升级到3.0.6安装。我一直在关注记录的upgrade process。
我遇到的问题是$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/"
}
}
}
答案 0 :(得分:0)
根据var_dump($this->uri)
的{{1}} ...
http://localhost:8080/2017/
...您的URI中没有任何段(object(CI_URI)#6 (6) {
["keyval"]=>
array(0) {
}
["uri_string"]=>
string(0) ""
["segments"]=>
array(0) {
}
....
之后没有),因此2017/
是URI字符串的预期结果。
""
返回:URI字符串
返回类型:字符串
返回包含完整URI的字符串。例如,如果这是您的完整网址:
uri_string()
该方法将返回:
http://example.com/index.php/news/local/345
请注意news/local/345
不是URI字符串的一部分。