Ich wurde beauftragt, eine 2.0x CodeIgniter-Installation mit PHP 4 auf eine 3.0.6-Installation mit PHP 7 und Nginx zu aktualisieren. Ich habe die dokumentierten upgrade process verfolgt.CodeIgniter, erhalten aktuelle URI in Controller?
Das Problem, das ich renne ist, dass der Wert von $this->uri
, eine vorhandene Seite jetzt wie Müll aussieht.
Der Code, ohne die andere Logik:
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
}
}
Die Textausgabe im Protokoll:
"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"
Ich weiß nicht, was den s:0:"";
Wertes machen oder was soll ich sein tun, um dieses Problem zu lösen?
@ Vorschlag des Sparky Im Anschluss an die var_dump($this->uri)
Ausgang für http://localhost:8080/2017/ (CodeIgniter lebt im Jahr 2017 Pfad), ergibt sich:
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/"
}
}
}
Warum geben Sie eine '1' in' uri_string() '? – Sparky
Haben Sie '$ this-> uri-> uri_string()' mit 'echo' oder' var_dump() 'untersucht? – Sparky
Die 1 war im Beispiel ein Tippfehler und hat Beispiel aktualisiert. Ich habe '' 'error_log()' '' als Alternative zum Echo verwendet. Das erste, was ich bemerkte, ist das Problem, weil das elseif eingegeben wird und das extra '/' hinzugefügt wird, was bei der Installation von CodeIgniter 2.0.x nicht passiert ist. '' 'var_dump ($ this-> uri-> uri_string())' '' gibt '' 'string (0)" "' '', während '' 'var_dump ($ this-> uri)' '' ergibt a strukturiertere Ausgabe. Ich werde oben aktualisieren. –