Cuối cùng tôi đã có thể repro vấn đề với hai dòng sau:Screen trắng of Death trong silex khi chuyển đổi từ PHP 5.3 để Php 5.4 vì "session_start"
session_set_save_handler(new SessionHandler());
session_start();
Khi tôi làm điều này, tôi nhận được một WSOD! Bất kỳ ý tưởng tại sao điều này xảy ra?
============================================== ==============
Cuối cùng, tôi đào sâu hơn và sâu hơn và thu hẹp nó xuống vấn đề được gây ra vì thất bại trong session_start()
; Tuy nhiên, tôi không biết tại sao nó lại thất bại như vậy.
Vì vậy, sự cố xảy ra với: Khi session_start()
được gọi là NativeSessionStorage::start()
, lỗi này không thành công. Tuy nhiên, khi tôi tạo một trang thử nghiệm mẫu, chỉ cần session_start()
nó mới thành công!
Silex có làm gì khác không ?!
Tôi đang giữ văn bản bên dưới để bất kỳ ai gặp phải vấn đề tương tự cũng hiểu lý do đằng sau sự cố.
============================================== ==============
Tôi đã cố chuyển từ Php 5.3 sang Php 5.4 gần đây và trang web của tôi dựa trên Silex ngừng hoạt động với WSOD.
Tôi đã kiểm tra Lỗi Logs PHP và tôi thấy:. Premature end of script headers: php54.cgi
Tôi đã thử làm rất nhiều thứ và cuối cùng nghĩ đến hỏi nó trực tuyến :(Đây là những gì tôi đã cố gắng:
- Tạo một . xương trần dự án silex và kiểm tra nếu nó đang làm việc Nope, nó không phải là
Added mã trước khi silex được khởi tạo và thiết
app[debug] = true
sau:.ini_set('display_errors', 1); error_reporting(-1); ErrorHandler::register(); if ('cli' !== php_sapi_name()) { ExceptionHandler::register(); }
Đã cố gắng kiểm tra mức độ mã đi. Nhưng tôi đã tiếp tục bước vào. Tôi đã đi đến
NativeSessionStorage::start()
và đã từ bỏ, do đó, nó đã được làm việc cho đến sau đó và bất kỳ lỗi nào tôi tạo ra đã được báo cáo đúng như mong đợi.Đã thử xem các mục khác về cách sửa lỗi BSOD, nhưng không ai trong số họ thực sự giải thích cách mọi thứ sẽ thay đổi bằng cách chuyển từ PHP 5.3 sang PHP 5.4! Đó là tất cả những gì tôi đã làm. Chỉ cần thay đổi phiên bản PHP và PHP.INI cho phù hợp. Dưới đây là PHP.INI tôi sử dụng ngay bây giờ.
; |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
tôi đã sử dụng các công cụ được cung cấp bởi các bảng điều khiển của tài khoản lưu trữ của tôi để làm cho việc chuyển đổi, vì vậy tôi khá chắc chắn nó phải là thích hợp. Tôi có thể chạy các tập lệnh PHP khác.
bạn đã kiểm tra bản ghi PHP trên máy chủ để xem lỗi nào nó đang nhận? – Barmar
Có Barmar, tôi nhận được: Kết thúc sớm của tiêu đề tập lệnh: php54.cgi. Tôi đã thêm nó vào câu hỏi để những người khác cũng biết. –
điều này có hữu ích không? http://silex.sensiolabs.org/doc/web_servers.html – RST