2016-05-11 18 views
0

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/" 
    } 
    } 
} 
+0

Warum geben Sie eine '1' in' uri_string() '? – Sparky

+0

Haben Sie '$ this-> uri-> uri_string()' mit 'echo' oder' var_dump() 'untersucht? – Sparky

+0

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. –

Antwort

0

nach Ihren var_dump($this->uri) von http://localhost:8080/2017/ ...

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

... Es gibt keine Segmente in Ihrem URI (nichts nach 2017/), daher ist "" das erwartete Ergebnis für die URI-Zeichenfolge.


According to the docs:

uri_string()

Returns: URI-Zeichenfolge

Rückgabetyp: string

Gibt einen String mit dem vollständigen URI. Zum Beispiel, wenn dies Ihre vollständige URL:

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

Das Verfahren würde dies zurück:

news/local/345

Beachten Sie, wie http://example.com/index.php/ nicht Teil der Zeichenfolge URI ist.

Verwandte Themen