Finalmente sono riuscito a Repro il problema con le seguenti due righe:schermo bianco della morte in Silex quando si passa da PHP 5.3 a PHP 5.4 a causa di "session_start"
session_set_save_handler(new SessionHandler());
session_start();
Quando faccio questo, ottengo un WSOD! Qualche idea del perché accada questo?
========================================= ==============
Infine, ho scavato sempre più in profondità e ridotto il problema a causa di un errore in session_start()
; Tuttavia, non so perché fallisce in questo modo.
Quindi, il problema si riduce a: Quando session_start()
viene chiamato in NativeSessionStorage::start()
, non riesce. Tuttavia, quando creo una pagina di prova di esempio che fa semplicemente session_start()
, riesce!
Silex fa qualcosa di diverso ?!
Sto mantenendo il testo qui sotto in modo che chiunque abbia problemi simili capisca il motivo del fallimento.
========================================= ==============
Ho cercato di passare da Php 5.3 a Php 5.4 di recente e il mio sito web basato su Silex ha smesso di funzionare con un WSOD.
ho controllato i registri di errore di PHP e vedo:. Premature end of script headers: php54.cgi
ho provato a fare un sacco di roba e infine pensato di chiedere online :(Ecco cosa ho provato:
- creato una . ossa nude progetto Silex e controllato se si sta lavorando no, non era
codice aggiunto prima Silex viene inizializzato e impostare
app[debug] = true
dopo:.ini_set('display_errors', 1); error_reporting(-1); ErrorHandler::register(); if ('cli' !== php_sapi_name()) { ExceptionHandler::register(); }
Si è cercato di verificare fino a che punto il codice va. Ma continuavo a intervenire. Sono andato fino allo
NativeSessionStorage::start()
e mi sono arreso, quindi fino a quel momento funzionava e ogni errore che generavo veniva segnalato correttamente come previsto.Provato a guardare altre voci per come risolvere BSOD, ma nessuno di loro ha davvero spiegato come le cose sarebbero cambiate passando da PHP 5.3 a PHP 5.4! Questo è tutto ciò che ho fatto. Ho appena modificato la versione PHP e PHP.INI di conseguenza. Di seguito è il PHP.INI che uso ora.
; |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
ho usato gli strumenti forniti dal pannello di controllo del mio account di hosting di effettuare il passaggio, quindi sono abbastanza sicuro che deve essere corretta. Sono in grado di eseguire altri script PHP.
hai controllato il registro PHP sul server per vedere quale errore sta ottenendo? – Barmar
Sì Barmar, ottengo: Fine prematura delle intestazioni degli script: php54.cgi. L'ho aggiunto alla domanda così anche gli altri lo sanno. –
sarebbe di aiuto? http://silex.sensiolabs.org/doc/web_servers.html – RST