Bug #45945 [Com]: Apache byterange output filter nullified if mod_php5 output > 8000 bytes

From: Date: Wed, 24 Mar 2010 09:02:46 +0000
Subject: Bug #45945 [Com]: Apache byterange output filter nullified if mod_php5 output > 8000 bytes
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-148922@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=45945&edit=1

 ID:               45945
 Comment by:       thwien at gmx dot net
 Reported by:      djimenez at conduit-it dot com
 Summary:          Apache byterange output filter nullified if mod_php5
                   output > 8000 bytes
 Status:           Open
 Type:             Bug
 Package:          Apache2 related
 Operating System: Ubuntu
 PHP Version:      5.*, 6CVS (2009-07-15)

 New Comment:

I can confirm this problem. Exactly over 8000 Bytes it does not work
anymore. Also using the Apache module x-sendfile does not solve this
error in my case. The one and only work-around in my case is a header
call with location of a static url.

header('Location: http://any.url/toanyfile.html');
exit;

After this just Apache controls the range operator and it works as
expected.


Previous Comments:
------------------------------------------------------------------------
[2009-10-13 21:30:08] dylan at io dot com

I have found that using sing X-Sendfile will solve this issue:
http://tn123.ath.cx/mod_xsendfile/
(at least for Apache/mod_php).

Also even if this "bug" was fixed, I'm not sure the results would be 
very desirable.  Since there's no way to efficiently "fseek" to a 
particular byte in the script output, I assume mod_php would have to 
transfer the entire document internally for each chunk that was 
requested.

------------------------------------------------------------------------
[2009-09-16 14:15:21] djimenez at conduit-it dot com

Using the handler module:

LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3 .html .inc .func 
.clss
  AddType application/x-httpd-php-source .phps
</IfModule>

------------------------------------------------------------------------
[2009-09-16 12:35:33] jani@php.net

Are you using the filter or handler module? What exactly do you put in 
your httpd.conf to enable PHP?

------------------------------------------------------------------------
[2009-07-15 19:01:34] djimenez at conduit-it dot com

I tested against nightly snapshot php5.3-200907151630 and still obtain 
the same results. The bug is probably in the php5 apache2 module.

------------------------------------------------------------------------
[2008-08-31 02:22:29] djimenez at conduit-it dot com

I used amazon ec2 to test and reconfirm this bug on a base install of 
apache2 and php5.2.6 in ubuntu intrepid ibex. No changes to the 
php.ini (which I've included without comments and empty sections):

[PHP]
engine = On
zend.ze1_compatibility_mode = Off

short_open_tag = On
asp_tags = Off
precision    =  12
y2k_compliance = On

output_buffering = Off

zlib.output_compression = Off
implicit_flush = Off

unserialize_callback_func=

serialize_precision = 100

allow_call_time_pass_reference = On

safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
disable_classes =

expose_php = On

max_execution_time = 30     ; Maximum execution time of each script, 
in seconds
max_input_time = 60 ; Maximum amount of time each script may spend 
parsing request data
memory_limit = 16M      ; Maximum amount of memory a script may 
consume (16MB)

error_reporting  =  E_ALL & ~E_NOTICE

display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off

variables_order = "EGPCS"
register_globals = Off
register_long_arrays = On
register_argc_argv = On
auto_globals_jit = On

post_max_size = 8M

magic_quotes_gpc = On
magic_quotes_runtime = Off
magic_quotes_sybase = Off

auto_prepend_file =
auto_append_file =

default_mimetype = "text/html"

doc_root =
user_dir =
enable_dl = Off

file_uploads = On
upload_max_filesize = 2M
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60

[Syslog]
define_syslog_variables  = Off

[mail function]
SMTP = localhost
smtp_port = 25

[SQL]
sql.safe_mode = Off

[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1

[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[MySQLi]
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off

[mSQL]
msql.allow_persistent = On
msql.max_persistent = -1
msql.max_links = -1

[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

[Sybase]
sybase.allow_persistent = On
sybase.max_persistent = -1
sybase.max_links = -1
sybase.min_error_severity = 10
sybase.min_message_severity = 10
sybase.compatability_mode = Off

[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10

[bcmath]
bcmath.scale = 0

[Informix]
ifx.default_host =
ifx.default_user =
ifx.default_password =
ifx.allow_persistent = On
ifx.max_persistent = -1
ifx.max_links = -1
ifx.textasvarchar = 0

ifx.byteasvarchar = 0
ifx.charasvarchar = 0
ifx.blobinfile = 0
ifx.nullformat = 0

[Session]
session.save_handler = files
session.use_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_divisor     = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4

url_rewriter.tags = 
"a=href,area=href,frame=src,input=src,form=,fieldset="

[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off


[Tidy]
tidy.clean_output = Off

[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    http://bugs.php.net/bug.php?id=45945


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=45945&edit=1


Thread (14 messages)

« previous php.bugs (#148922) next »