2014-11-26 15 views
5

Wreszcie udało mi się powtórzenia błędu problem z następujących dwóch linii:biały ekran śmierci w Silex podczas przełączania z PHP 5.3 PHP 5.4 z powodu „session_start”

session_set_save_handler(new SessionHandler()); 
session_start(); 

Kiedy to zrobić, mam WSOD! Masz pomysł, dlaczego tak się dzieje?

============================================== ==============

W końcu zacząłem kopać coraz głębiej i zawęzić do problemu, który był spowodowany niepowodzeniem w session_start(); Wciąż nie wiem, dlaczego tak się nie udaje.

Problem polega więc na tym, że: Po wywołaniu session_start() w numerze NativeSessionStorage::start() nie powiedzie się. Jednak po utworzeniu przykładowej strony testowej, która po prostu robi session_start(), to się uda!

Does Silex zrobić coś innego ?!

jestem utrzymując tekst poniżej tak, że ktoś stoi podobny problem rozumie przyczynę niepowodzenia.

============================================== ==============

starałem się przełączyć z PHP 5.3 PHP 5.4 niedawno i moja strona na podstawie Silex przestał działać z WSOD.

Sprawdziłem logi błędów PHP i widzę. Premature end of script headers: php54.cgi

Próbowałem robić wiele rzeczy i wreszcie myśli pytając go online :(Oto, co starałem:

  1. Utworzony szkielety. Silex projekt i sprawdzić, czy to działa nie, to nie był
  2. kod Dodany przed Silex jest inicjowany i ustawić app[debug] = true po.

    ini_set('display_errors', 1); 
    error_reporting(-1); 
    ErrorHandler::register(); 
    if ('cli' !== php_sapi_name()) { 
        ExceptionHandler::register(); 
    } 
    
  3. Próbowałem sprawdzić, w jakim stopniu przebiega kod. Ale ciągle wchodziłem. Doszedłem do NativeSessionStorage::start() i poddałem się, więc działało do tego czasu i wszelkie błędy, które generuję, były zgłaszane zgodnie z oczekiwaniami.

  4. Próbowałem sprawdzić inne wpisy, jak naprawić BSOD, ale żaden z nich nie wyjaśnił, jak rzeczy by się zmieniły, przechodząc z PHP 5.3 do PHP 5.4! To wszystko, co zrobiłem. Po prostu zmieniono odpowiednio wersję PHP i PHP.INI. Poniżej znajduje się plik PHP.INI, którego teraz używam.

    ;       |PIG v0.3.2.1| 
    [PHP] 
        open_basedir = 
        engine = 1 
        zend.ze1_compatibility_mode = 
        short_open_tag = 1 
        asp_tags = 
        precision = 14 
        y2k_compliance = 1 
        output_buffering = 4096 
        zlib.output_compression = 
        implicit_flush = 
        unserialize_callback_func = 
        serialize_precision = 100 
        allow_call_time_pass_reference = 
        safe_mode = 
        ; safe_mode_gid = 1 
        safe_mode_include_dir = 
        safe_mode_exec_dir = 
        safe_mode_allowed_env_vars = "PHP_" 
        safe_mode_protected_env_vars = "LD_LIBRARY_PATH" 
        disable_functions = exec,passthru,shell_exec,system,proc_open,popen,show_source 
        disable_classes = 
        highlight.string = "#DD0000" 
        highlight.comment = "#FF9900" 
        highlight.keyword = "#007700" 
        highlight.bg = "#FFFFFF" 
        highlight.default = "#0000BB" 
        highlight.html = "#000000" 
        expose_php = 1 
        max_execution_time = 30 
        max_input_time = 60 
        memory_limit = 128M 
        error_reporting = 6135 
        display_errors = 1 
        display_startup_errors = 
        log_errors = 1 
        log_errors_max_len = 1024 
        ignore_repeated_errors = 
        ignore_repeated_source = 
        report_memleaks = 1 
        track_errors = 
        html_errors = 
        error_log = "/hsphere/local/var/httpd/logs/php54_error.log" 
        variables_order = EGPCS 
        register_globals = 0 
        ; register_long_arrays = 1 
        register_argc_argv = 1 
        auto_globals_jit = 1 
        post_max_size = 30M 
        ; magic_quotes_gpc = 1 
        magic_quotes_runtime = 
        magic_quotes_sybase = 
        auto_prepend_file = 
        auto_append_file = 
        default_mimetype = "text/html" 
        always_populate_raw_post_data = 1 
    
    
    ;***** Added by go-pear 
    include_path=".:/hsphere/shared/php54/include/php/PEAR" 
    ;***** 
    
        doc_root = 
        user_dir = 
        extension_dir = "/hsphere/shared/php54/lib/php/extensions/no-debug-non-zts-20100525/" 
        cgi.fix_pathinfo = 1 
        file_uploads = 1 
        upload_tmp_dir = 
        upload_max_filesize = 25M 
        allow_url_fopen = 1 
        allow_url_include = 
        default_socket_timeout = 60 
        auto_detect_line_endings = 1 
    [Syslog] 
        define_syslog_variables = 
    [mail function] 
        sendmail_path = /usr/sbin/sendmail -t -i [email protected] 
        mail.force_extra_parameters = 
    [SQL] 
        sql.safe_mode = 
    [ODBC] 
        odbc.allow_persistent = 
        odbc.check_persistent = 1 
        odbc.max_persistent = "-1" 
        odbc.max_links = "-1" 
        odbc.defaultlrl = 4096 
        odbc.defaultbinmode = 1 
    [MySQL] 
        mysql.allow_persistent = 
        mysql.max_persistent = "-1" 
        mysql.max_links = "-1" 
        mysql.default_port = 3306 
        mysql.default_socket = "/var/lib/mysql/mysql.sock" 
        mysql.default_host = localhost 
        mysql.default_user = 
        mysql.default_password = 
        mysql.connect_timeout = 60 
        mysql.trace_mode = 
    [MySQLi] 
        mysqli.max_links = "-1" 
        mysqli.default_port = 3306 
        mysqli.default_socket = "/var/lib/mysql/mysql.sock" 
        mysqli.default_host = localhost 
        mysqli.default_user = 
        mysqli.default_pw = 
        mysqli.reconnect = 
    [PostgresSQL] 
        pgsql.allow_persistent = 
        pgsql.auto_reset_persistent = 
        pgsql.max_persistent = "-1" 
        pgsql.max_links = "-1" 
        pgsql.ignore_notice = 0 
        pgsql.log_notice = 0 
    [dbx] 
        dbx.colnames_case = lowercase 
    [bcmath] 
        bcmath.scale = 0 
    [Session] 
        session.save_handler = files 
        session.save_path = "${US_ROOTF}/tmp" 
        session.use_cookies = 1 
        session.use_only_cookies = 1 
        session.name = PHPSESSID 
        session.auto_start = 0 
        session.cookie_lifetime = 0 
        session.cookie_path =/
        session.cookie_domain = 
        session.cookie_httponly = 
        session.serialize_handler = php 
        session.gc_probability = 1 
        session.gc_divisor = 1000 
        session.gc_maxlifetime = 1440 
        session.bug_compat_42 = Off 
        session.bug_compat_warn = Off 
        session.referer_check = 
        session.cache_limiter = nocache 
        session.cache_expire = 180 
        session.use_trans_sid = 0 
        session.hash_function = 0 
        session.hash_bits_per_character = 5 
        url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" 
    [Assertion] 
        assert.active = 1 
        assert.warning = 1 
        assert.bail = 
        assert.callback = 0 
        assert.quiet_eval = 0 
    [Sockets] 
        sockets.use_system_read = 1 
    [mbstring] 
        mbstring.language = Neutral 
        mbstring.internal_encoding = "EUC-JP" 
        mbstring.http_input = pass 
        mbstring.http_output = pass 
        mbstring.encoding_translation = 
        mbstring.detect_order = auto 
        mbstring.substitute_character = 
        mbstring.func_overload = 0 
    [exif] 
        exif.encode_unicode = "ISO-8859-15" 
        exif.decode_unicode_motorola = "UCS-2BE" 
        exif.decode_unicode_intel = "UCS-2LE" 
        exif.encode_jis = 
        exif.decode_jis_motorola = JIS 
        exif.decode_jis_intel = JIS 
    [soap] 
        soap.wsdl_cache_enabled = 1 
        soap.wsdl_cache_dir = "/tmp" 
        soap.wsdl_cache_ttl = 86400 
    [Zend] 
    zend_extension="/hsphere/shared/php54/lib/php/extensions/ZendGuardLoader.so" 
    ; zend_extension_manager.optimizer = "/usr/local/Zend/lib/Optimizer-3.3.3" 
    ; zend_extension_manager.optimizer_ts = "/usr/local/Zend/lib/Optimizer_TS-3.3.3" 
    ; zend_optimizer.version = "3.3.3" 
    ; zend_extension = "/usr/local/Zend/lib/ZendExtensionManager.so" 
    ; zend_extension_ts = "/usr/local/Zend/lib/ZendExtensionManager_TS.so" 
    [suhosin] 
    ; extension = suhosin.so 
        suhosin.executor.include.max_traversal = 4 
        suhosin.executor.disable_emodifier = 0 
        suhosin.executor.include.whitelist = "http://,https://,file://,bfa://" 
        suhosin.executor.allow_symlink = 0 
        suhosin.mail.protect = 1 
        suhosin.upload.disallow_elf = 1 
        suhosin.log.syslog = 511 
        suhosin.log.syslog.facility = 8 
        suhosin.log.syslog.priority = 1 
        suhosin.log.sapi = 511 
        suhosin.session.encrypt = 0 
        suhosin.cookie.cryptua = 0 
        suhosin.session.cryptdocroot = 0 
        suhosin.cookie.cryptdocroot = 0 
        suhosin.executor.include.whitelist="phar" 
        suhosin.get.max_value_length = 10240 
    [curl] 
    extension=curl.so 
    [gmp] 
    extension=gmp.so 
    [iconv] 
    extension=iconv.so 
    [imap] 
    extension=imap.so 
    [mysqli] 
    extension=mysqli.so 
    [mysql] 
    extension=mysql.so 
    [odbc] 
    extension=odbc.so 
    [pdo] 
    extension=pdo.so 
    [pdo_mysql] 
    extension=pdo_mysql.so 
    [pdo_pgsql] 
    extension=pdo_pgsql.so 
    [pdo_sqlite] 
    extension=pdo_sqlite.so 
    [pgsql] 
    extension=pgsql.so 
    [sqlite3] 
    extension=sqlite3.so 
    [htscanner] 
    extension=htscanner.so 
    [mongo] 
    extension=mongo.so 
    [date] 
    date.timezone=EST 
    

użyłem narzędzi dostarczonych przez centralę mojego konta hostingowego do przejścia, więc jestem całkiem pewny, że to musi być właściwa. Mogę uruchomić inne skrypty PHP.

+0

Czy sprawdziłeś log PHP na serwerze, aby zobaczyć, jaki błąd się pojawia? – Barmar

+0

Tak, Barmar, otrzymuję: Przedwczesne zakończenie nagłówków skryptu: php54.cgi. Dodałem go do pytania, aby inni wiedzieli. –

+0

czy to pomoże? http://silex.sensiolabs.org/doc/web_servers.html – RST

Odpowiedz

0

Być może uruchom "strace", aby zobaczyć, gdzie PHP się nie udaje. Być może masz problemy z uprawnieniami na podstawie tego, co użytkownik próbuje uzyskać dostęp do określonych zasobów. Na przykład katalog, w którym sesje mają zostać zapisane.

1

Myślę, że wcześniej miałem ten sam problem. Jeśli używasz wersji PHP < 5.4.11 - jest błąd w implementacji SessionHandler - sprawdź to link, może jest w jakiś sposób powiązany ...

Powiązane problemy