php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #9644 File Upload eats all RAM and swap space
Submitted: 2001-03-09 01:10 UTC Modified: 2001-03-24 04:11 UTC
From: gerard at valencia dot bc dot ca Assigned:
Status: Closed Package: Reproducible Crash
PHP Version: 4.0.4pl1 OS: Linux Kernel 2.4.1
Private report: No CVE-ID: None
 [2001-03-09 01:10 UTC] gerard at valencia dot bc dot ca
Hi!

I'm using PHP to create a file upload script for a website.  When a user uploads a large file (>1Mb) my server always starts to use all the available RAM(I have 160Mb installed), and also uses up all the swap space(256Mb).  This happens for any upload script written in PHP, even scripts that work on other servers.  I can upload files to scripts written in PERL, without a problem.  To resolve this problem, my only option is to completely kill apache with 'apachectl stop' and then start it back 'apachectl start'

Server software:
Apache 1.3.19 (also happened while I was running 1.3.17)
PHP 4.0.4pl1
Linux 2.4.1 (originally slackware 7.1 distro)

Server specs:
Intel Pentium 133Mhz
160Mb RAM
10Gb HDD

Here is the script that I'm using:
<?php
$base = realpath($DOCUMENT_ROOT . '/goods/docs/');
if (!$path) {
    $xdir = $base;
    $idir = '/goods/docs/';
    $sdir = './';
    $spath = '/';
} else {
    $idir = '/goods/docs/' . $path;
    $xdir = realpath($base . '/' . $path);
    $sdir = '/' . $path;
    $newpath = realpath($base . '/' . $path) . '/';
    $spath = substr($newpath, strlen($base), strlen($newpath)-strlen($base));
}
if (substr($xdir, 0, strlen($base)) != $base) {
echo "<font size=\"4\" color=\"#FF0000\">Trying something?</font>";
} else {
if ($userfile_size) {
$target = $xdir.'/'.$userfile_name;
if (!copy ($userfile,$target)) {
    echo 'Error copying file! Please try again!<br>Press the back button in your browser!';
} else {
    header ("Location: http://mouthoff.magestudios.net/admin/filemanager/?path=".urlencode($path));
    exit;
}
} else {
?>
<FORM ENCTYPE="multipart/form-data" ACTION="/admin/filemanager/upload.php" METHOD="POST">
Upload this file: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="2000">
<input type="hidden" name="path" value="<?php echo $spath;?>">
<INPUT TYPE="submit" name="sendfile" VALUE="Upload File">
</FORM>
<?php
}
}
?>

I'm a PHP newbie, so please excuse any bad coding =)

Here's a copy of php.ini:
[PHP]

;;;;;;;;;;;;;;;;;;;
; About this file ;
;;;;;;;;;;;;;;;;;;;
; This file controls many aspects of PHP's behavior.  In order for PHP to
; read it, it must be named 'php.ini'.  PHP looks for it in the current
; working directory, in the path designated by the environment variable
; PHPRC, and in the path that was defined in compile time (in that order).
; Under Windows, the compile-time path is the Windows directory.  The
; path in which the php.ini file is looked for can be overriden using
; the -c argument in command line mode.
;
; The syntax of the file is extremely simple.  Whitespace and Lines
; beginning with a semicolon are silently ignored (as you probably guessed).
; Section headers (e.g. [Foo]) are also silently ignored, even though
; they might mean something in the future.
;
; Directives are specified using the following syntax:
; directive = value
; Directive names are *case sensitive* - foo=bar is different from FOO=bar.
;
; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one
; of the INI constants (On, Off, True, False, Yes, No and None) or an expression
; (e.g. E_ALL & ~E_NOTICE), or a quoted string ("foo").
;
; Expressions in the INI file are limited to bitwise operators and parentheses:
; |				bitwise OR
; &				bitwise AND
; ~				bitwise NOT
; !				boolean NOT
;
; Boolean flags can be turned on using the values 1, On, True or Yes.
; They can be turned off using the values 0, Off, False or No.
;
; An empty string can be denoted by simply not writing anything after the equal
; sign, or by using the None keyword:
;
;   foo =			; sets foo to an empty string
;	foo = none		; sets foo to an empty string
;	foo = "none"	; sets foo to the string 'none'
;
; If you use constants in your value, and these constants belong to a dynamically
; loaded extension (either a PHP extension or a Zend extension), you may only
; use these constants *after* the line that loads the extension.
;
; All the values in the php.ini-dist file correspond to the builtin
; defaults (that is, if no php.ini is used, or if you delete these lines,
; the builtin defaults will be identical).


;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

engine			=	On	; Enable the PHP scripting language engine under Apache
short_open_tag	=	On	; allow the <? tag.  otherwise, only <?php and <script> tags are recognized.
asp_tags		=	Off ; allow ASP-style <% %> tags
precision		=	14	; number of significant digits displayed in floating point numbers
y2k_compliance	=	Off	; whether to be year 2000 compliant (will cause problems with non y2k compliant browsers)
output_buffering	= Off	; Output buffering allows you to send header lines (including cookies)
							; even after you send body content, in the price of slowing PHP's
							; output layer a bit.
							; You can enable output buffering by in runtime by calling the output
							; buffering functions, or enable output buffering for all files
							; by setting this directive to On.
output_handler		=		; You can redirect all of the output of your scripts to a function,
							; that can be responsible to process or log it.  For example,
							; if you set the output_handler to "ob_gzhandler", than output
							; will be transparently compressed for browsers that support gzip or
							; deflate encoding.  Setting an output handler automatically turns on
							; output buffering.
implicit_flush		= Off	; Implicit flush tells PHP to tell the output layer to flush itself
							; automatically after every output block.  This is equivalent to
							; calling the PHP function flush() after each and every call to print()
							; or echo() and each and every HTML block.
							; Turning this option on has serious performance implications, and
							; is generally recommended for debugging purposes only.
allow_call_time_pass_reference	= On	; whether to enable the ability to force arguments to be 
										; passed by reference at function-call time.  This method
										; is deprecated, and is likely to be unsupported in future
										; versions of PHP/Zend.  The encouraged method of specifying
										; which arguments should be passed by reference is in the
										; function declaration.  You're encouraged to try and
										; turn this option Off, and make sure your scripts work
										; properly with it, to ensure they will work with future
										; versions of the language (you will receive a warning
										; each time you use this feature, and the argument will
										; be passed by value instead of by reference).

; Safe Mode
safe_mode		=	Off
safe_mode_exec_dir	=
safe_mode_allowed_env_vars = PHP_					; Setting certain environment variables
													; may be a potential security breach.
													; This directive contains a comma-delimited
													; list of prefixes.  In Safe Mode, the
													; user may only alter environment
													; variables whose names begin with the
													; prefixes supplied here.
													; By default, users will only be able
													; to set environment variables that begin
													; with PHP_ (e.g. PHP_FOO=BAR).
													; Note:  If this directive is empty, PHP
													; will let the user modify ANY environment
													; variable!
safe_mode_protected_env_vars = LD_LIBRARY_PATH		; This directive contains a comma-
													; delimited list of environment variables,
													; that the end user won't be able to
													; change using putenv().
													; These variables will be protected
													; even if safe_mode_allowed_env_vars is
													; set to allow to change them.


disable_functions	=								; This directive allows you to disable certain
													; functions for security reasons.  It receives
													; a comma separated list of function names.
													; This directive is *NOT* affected by whether
													; Safe Mode is turned on or off.
													

; Colors for Syntax Highlighting mode.  Anything that's acceptable in <font color=???> would work.
highlight.string	=	#DD0000
highlight.comment	=	#FF8000
highlight.keyword	=	#007700
highlight.bg		=	#FFFFFF
highlight.default	=	#0000BB
highlight.html		=	#000000

; Misc
expose_php	=	On		; Decides whether PHP may expose the fact that it is installed on the
						; server (e.g., by adding its signature to the Web server header).
						; It is no security threat in any way, but it makes it possible
						; to determine whether you use PHP on your server or not.



;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 30     ; Maximum execution time of each script, in seconds
memory_limit = 8M			; Maximum amount of memory a script may consume (8MB)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; error_reporting is a bit-field.  Or each number up to get desired error reporting level
; E_ALL				- All errors and warnings
; E_ERROR			- fatal run-time errors
; E_WARNING			- run-time warnings (non fatal errors)
; E_PARSE			- compile-time parse errors
; E_NOTICE			- run-time notices (these are warnings which often result from a bug in
;					  your code, but it's possible that it was intentional (e.g., using an
;					  uninitialized variable and relying on the fact it's automatically
;					  initialized to an empty string)
; E_CORE_ERROR		- fatal errors that occur during PHP's initial startup
; E_CORE_WARNING	- warnings (non fatal errors) that occur during PHP's initial startup
; E_COMPILE_ERROR	- fatal compile-time errors
; E_COMPILE_WARNING	- compile-time warnings (non fatal errors)
; E_USER_ERROR		- user-generated error message
; E_USER_WARNING	- user-generated warning message
; E_USER_NOTICE		- user-generated notice message
; Examples:
; error_reporting = E_ALL & ~E_NOTICE						; show all errors, except for notices
; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR	; show only errors
error_reporting	=	E_ALL & ~E_NOTICE		; Show all errors except for notices
display_errors	=	On	; Print out errors (as a part of the output)
						; For production web sites, you're strongly encouraged
						; to turn this feature off, and use error logging instead (see below).
						; Keeping display_errors enabled on a production web site may reveal
						; security information to end users, such as file paths on your Web server,
						; your database schema or other information.
display_startup_errors = Off		; Even when display_errors is on, errors that occur during
									; PHP's startup sequence are not displayed.  It's strongly
									; recommended to keep display_startup_errors off, except for
									; when debugging.
log_errors		=	Off	; Log errors into a log file (server-specific log, stderr, or error_log (below))
						; As stated above, you're strongly advised to use error logging in place of
						; error displaying on production web sites.
track_errors	=	Off	; Store the last error/warning message in $php_errormsg (boolean)
;error_prepend_string = "<font color=ff0000>"   ; string to output before an error message
;error_append_string = "</font>"                ; string to output after an error message
;error_log	=	filename	; log errors to specified file
;error_log	=	syslog		; log errors to syslog (Event Log on NT, not valid in Windows 95)
warn_plus_overloading	=	Off		; warn if the + operator is used with strings


;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
variables_order		=	"EGPCS"	; This directive describes the order in which PHP registers
								; GET, POST, Cookie, Environment and Built-in variables (G, P,
								; C, E & S respectively, often referred to as EGPCS or GPC).
								; Registration is done from left to right, newer values override
								; older values.
register_globals	=	On		; Whether or not to register the EGPCS variables as global
								; variables.  You may want to turn this off if you don't want
								; to clutter your scripts' global scope with user data.  This makes
								; most sense when coupled with track_vars - in which case you can
								; access all of the GPC variables through the $HTTP_*_VARS[],
								; variables.
								; You should do your best to write your scripts so that they do
								; not require register_globals to be on;  Using form variables
								; as globals can easily lead to possible security problems, if
								; the code is not very well thought of.
register_argc_argv	=	On		; This directive tells PHP whether to declare the argv&argc
								; variables (that would contain the GET information).  If you
								; don't use these variables, you should turn it off for
								; increased performance
post_max_size		=	8M		; Maximum size of POST data that PHP will accept.
gpc_order			=	"GPC"	; This directive is deprecated.  Use variables_order instead.

; Magic quotes
magic_quotes_gpc	=	Off		; magic quotes for incoming GET/POST/Cookie data
magic_quotes_runtime=	Off		; magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_sybase	=	Off		; Use Sybase-style magic quotes (escape ' with '' instead of \')

; automatically add files before or after any PHP document
auto_prepend_file	= /usr/local/apache/php/prepend.php3
auto_append_file	=

; As of 4.0b4, PHP always outputs a character encoding by default in
; the Content-type: header.  To disable sending of the charset, simply
; set it to be empty.
; PHP's built-in default is text/html
default_mimetype = "text/html"
;default_charset = "iso-8859-1"

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
include_path	=                   ; UNIX: "/path1:/path2"  Windows: "\path1;\path2;/usr/local/apache/php:."
doc_root		=					; the root of the php pages, used only if nonempty
user_dir		=					; the directory under which php opens the script using /~username, used only if nonempty
extension_dir	=	./				; directory in which the loadable extensions (modules) reside
enable_dl		= On				; Whether or not to enable the dl() function.
									; The dl() function does NOT properly work in multithreaded
									; servers, such as IIS or Zeus, and is automatically disabled
									; on them.


;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads	= On				; Whether to allow HTTP file uploads
upload_tmp_dir	=/tmp	                ; temporary directory for HTTP uploaded files (will use system default if not specified)
upload_max_filesize = 2M		    ; Maximum allowed size for uploaded files


;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
allow_url_fopen = On                ; Wheter to allow trating URLs like http:... or ftp:... like files


;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; if you wish to have an extension loaded automaticly, use the
; following syntax:  extension=modulename.extension
; for example, on windows,
; extension=msql.dll
; or under UNIX,
; extension=msql.so
; Note that it should be the name of the module only, no directory information 
; needs to go here.  Specify the location of the extension with the extension_dir directive above.
extension=imap.so      ; Added for IMAP support
extension=mysql.so     ; Added for MySQL support
extension=pgsql.so     ; Added for PostgreSQL support
extension=ldap.so      ; Added for LDAP support


;Windows Extensions
;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
;
;extension=php_bz2.dll
;extension=php_ctype.dll
;extension=php_cpdf.dll
;extension=php_curl.dll
;extension=php_cybercash.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_domxml.dll
;extension=php_dotnet.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
;extension=php_gd.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mhash.dll
;extension=php_mssql65.dll
;extension=php_mssql70.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_sablot.dll
;extension=php_snmp.dll
;extension=php_sybase_ct.dll
;extension=php_yaz.dll
;extension=php_zlib.dll


;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Syslog]
define_syslog_variables	= Off	; Whether or not to define the various syslog variables,
								; e.g. $LOG_PID, $LOG_CRON, etc.  Turning it off is a
								; good idea performance-wise.  In runtime, you can define
								; these variables by calling define_syslog_variables()


[mail function]
SMTP			=	localhost			;for win32 only
sendmail_from	=	me@localhost.com	;for win32 only
;sendmail_path	=						;for unix only, may supply arguments as well (default is 'sendmail -t -i')

[Debugger]
debugger.host	=	localhost
debugger.port	=	7869
debugger.enabled	=	False

[Logging]
; These configuration directives are used by the example logging mechanism.
; See examples/README.logging for more explanation.
;logging.method    = db
;logging.directory = /path/to/log/directory

[Java]
;java.class.path = .\php_java.jar
;java.home = c:\jdk
;java.library = c:\jdk\jre\bin\hotspot\jvm.dll 
;java.library.path = .\


[SQL]
sql.safe_mode	=	Off

[ODBC]
;odbc.default_db		=	Not yet implemented
;odbc.default_user		=	Not yet implemented
;odbc.default_pw		=	Not yet implemented
odbc.allow_persistent	=	On	; allow or prevent persistent links
odbc.check_persistent  = 	On	; check that a connection is still validbefore reuse
odbc.max_persistent	=	-1	; maximum number of persistent links. -1 means no limit
odbc.max_links			=	-1	; maximum number of links (persistent+non persistent). -1 means no limit
odbc.defaultlrl	=	4096	; Handling of LONG fields. Returns number of bytes to variables, 0 means passthru
odbc.defaultbinmode	= 	1	; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char
; See the documentation on odbc_binmode and odbc_longreadlen for an explanation of uodbc.defaultlrl
; and uodbc.defaultbinmode

[MySQL]
mysql.allow_persistent	=	On	; allow or prevent persistent link
mysql.max_persistent	=	-1	; maximum number of persistent links. -1 means no limit
mysql.max_links			=	-1	; maximum number of links (persistent+non persistent).  -1 means no limit
mysql.default_port		=		; default port number for mysql_connect().  If unset,
								; mysql_connect() will use the $MYSQL_TCP_PORT, or the mysql-tcp
								; entry in /etc/services, or the compile-time defined MYSQL_PORT
								; (in that order).  Win32 will only look at MYSQL_PORT.
mysql.default_socket	=		; default socket name for local MySQL connects.  If empty, uses the built-in
								; MySQL defaults
mysql.default_host		=		; default host for mysql_connect() (doesn't apply in safe mode)
mysql.default_user		=		; default user for mysql_connect() (doesn't apply in safe mode)
mysql.default_password	=		; default password for mysql_connect() (doesn't apply in safe mode)
								; Note that this is generally a *bad* idea to store passwords
								; in this file.  *Any* user with PHP access can run
								; 'echo cfg_get_var("mysql.default_password")' and reveal that
								; password!  And of course, any users with read access to this
								; file will be able to reveal the password as well.

[mSQL]
msql.allow_persistent	=	On	; allow or prevent persistent link
msql.max_persistent		=	-1	; maximum number of persistent links. -1 means no limit
msql.max_links			=	-1	; maximum number of links (persistent+non persistent).  -1 means no limit

[PostgresSQL]
pgsql.allow_persistent	=	On	; allow or prevent persistent link
pgsql.max_persistent	=	-1	; maximum number of persistent links. -1 means no limit
pgsql.max_links			=	-1	; maximum number of links (persistent+non persistent).  -1 means no limit

[Sybase]
sybase.allow_persistent	=	On	; allow or prevent persistent link
sybase.max_persistent	=	-1	; maximum number of persistent links. -1 means no limit
sybase.max_links		=	-1	; maximum number of links (persistent+non persistent).  -1 means no limit
;sybase.interface_file	=	"/usr/sybase/interfaces"
sybase.min_error_severity	=	10	; minimum error severity to display
sybase.min_message_severity	=	10	; minimum message severity to display
sybase.compatability_mode	= Off	; compatability mode with old versions of PHP 3.0.
									; If on, this will cause PHP to automatically assign types to results
									; according to their Sybase type, instead of treating them all as
									; strings.  This compatability mode will probably not stay around
									; forever, so try applying whatever necessary changes to your code,
									; and turn it off.

[Sybase-CT]
sybct.allow_persistent	=	On		; allow or prevent persistent link
sybct.max_persistent	=	-1		; maximum number of persistent links. -1 means no limit
sybct.max_links			=	-1		; maximum number of links (persistent+non persistent).  -1 means no limit
sybct.min_server_severity	=	10	; minimum server message severity to display
sybct.min_client_severity	=	10	; minimum client message severity to display

[bcmath]
bcmath.scale	=	0	; number of decimal digits for all bcmath functions

[browscap]
;browscap	=	extra/browscap.ini

[Informix]
ifx.default_host		=		; default host for ifx_connect() (doesn't apply in safe mode)
ifx.default_user		=		; default user for ifx_connect() (doesn't apply in safe mode)
ifx.default_password		=		; default password for ifx_connect() (doesn't apply in safe mode)
ifx.allow_persistent		=	On	; allow or prevent persistent link
ifx.max_persistent		=	-1	; maximum number of persistent links. -1 means no limit
ifx.max_links			=	-1	; maximum number of links (persistent+non persistent).  -1 means no limit
ifx.textasvarchar		=	0	; if set on, select statements return the contents of a text blob instead of it's id
ifx.byteasvarchar		=	0	; if set on, select statements return the contents of a byte blob instead of it's id
ifx.charasvarchar		=	0	; trailing blanks are stripped from fixed-length char columns. May help the life
						; of Informix SE users. 
ifx.blobinfile			=	0	; if set on, the contents of text&byte blobs are dumped to a file instead of
						; keeping them in memory
ifx.nullformat			=	0	; NULL's are returned as empty strings, unless this is set to 1. In that case,
						; NULL's are returned as string 'NULL'.

[Session]
session.save_handler      = files   ; handler used to store/retrieve data
session.save_path         = /tmp    ; argument passed to save_handler
                                    ; in the case of files, this is the
                                    ; path where data files are stored
session.use_cookies       = 1       ; whether to use cookies
session.name              = PHPSESSID  
                                    ; name of the session
                                    ; is used as cookie name
session.auto_start        = 0       ; initialize session on request startup
session.cookie_lifetime   = 0       ; lifetime in seconds of cookie
                                    ; or if 0, until browser is restarted
session.cookie_path       = /       ; the path the cookie is valid for
session.cookie_domain     =         ; the domain the cookie is valid for
session.serialize_handler = php     ; handler used to serialize data
                                    ; php is the standard serializer of PHP
session.gc_probability    = 1       ; percentual probability that the 
                                    ; 'garbage collection' process is started
                                    ; on every session initialization
session.gc_maxlifetime    = 1440    ; after this number of seconds, stored
                                    ; data will be seen as 'garbage' and
                                    ; cleaned up by the gc process
session.referer_check     =         ; check HTTP Referer to invalidate 
                                    ; externally stored URLs containing ids
session.entropy_length    = 0       ; how many bytes to read from the file
session.entropy_file      =         ; specified here to create the session id
; session.entropy_length    = 16
; session.entropy_file      = /dev/urandom
session.cache_limiter     = nocache ; set to {nocache,private,public} to
                                    ; determine HTTP caching aspects
session.cache_expire      = 180     ; document expires after n minutes
session.use_trans_sid     = 1       ; use transient sid support if enabled
                                    ; by compiling with --enable-trans-sid
url_rewriter.tags         = "a=href,area=href,frame=src,input=src,form=fakeentry"

[MSSQL]
mssql.allow_persistent		=	On	; allow or prevent persistent link
mssql.max_persistent		=	-1	; maximum number of persistent links. -1 means no limit
mssql.max_links				=	-1	; maximum number of links (persistent+non persistent).  -1 means no limit
mssql.min_error_severity	=	10	; minimum error severity to display
mssql.min_message_severity	=	10	; minimum message severity to display
mssql.compatability_mode	=  Off	; compatability mode with old versions of PHP 3.0.
;mssql.textlimit			= 4096	; valid range 0 - 2147483647 default = 4096
;mssql.textsize				= 4096	; valid range 0 - 2147483647 default = 4096
;mssql.batchsize			=	 0  ; limits the number of records in each bach. 0 = all records in one batch.

[Assertion]
;assert.active				=	On	; assert(expr); active by default
;assert.warning				=	On	; issue a PHP warning for each failed assertion.
;assert.bail				=	Off	; don't bail out by default.
;assert.callback			=	0	; user-function to be called if an assertion fails.
;assert.quiet_eval			=	0	; eval the expression with current error_reporting(). set to true if you want error_reporting(0) around the eval().

[Ingres II]
ingres.allow_persistent		=	On	; allow or prevent persistent link
ingres.max_persistent		=	-1	; maximum number of persistent links. (-1 means no limit)
ingres.max_links			=	-1	; maximum number of links, including persistents (-1 means no limit)
ingres.default_database		=		; default database (format : [node_id::]dbname[/srv_class]
ingres.default_user			=		; default user
ingres.default_password		=		; default password

[Verisign Payflow Pro]
pfpro.defaulthost			=	"test.signio.com"	; default Signio server
pfpro.defaultport			=	443	; default port to connect to
pfpro.defaulttimeout		=	30	; default timeout in seconds

; pfpro.proxyaddress		=		; default proxy IP address (if required)
; pfpro.proxyport			=		; default proxy port
; pfpro.proxylogon			=		; default proxy logon
; pfpro.proxypassword		=		; default proxy password
[Sockets]
sockets.use_system_read		=	On	; Use the system read() function instead of
						; the php_read() wrapper.

; Local Variables:
; tab-width: 4
; End:

apc.check_mtime=1 ; http://apc.communityconnect.com/faq.html#four

Here is my configure line:
'./configure' '--with-curl' '--with-mysql=/usr/local/mysql' '--with-imap=/usr/local/imap-2000c' '--with-ldap' '--with-mm' '--with-ttf' '--with-readline' '--with-pspell' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-inline-optimization' '--enable-magic-quotes' '--enable-memory-limit' '--enable-sigchild' '--enable-shmop' '--enable-sockets' '--enable-sysvshm' '--enable-sysvsem' '--enable-track-vars' '--enable-trans-sid' '--enable-versioning' '--enable-wddx' '--with-mcal' '--with-mhash' '--enable-dmalloc' '--enable-exif' '--enable-dbase' '--enable-filepro' '--with-gd' '--with-jpeg-dir=/usr/lib' '--with-xpm-dir=/usr/X11R6' '--with-zlib' '--with-apache=../apache_1.3.17' '--with-pgsql=/usr/local/pgsql'


Thank you!

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-03-09 19:49 UTC] sniper@php.net
1. There is an entry for APC in your php.ini.. have you
tried this without APC? 

2. Please try the latest CVS snapshot from http://snaps.php.net/

--Jani

 [2001-03-10 01:52 UTC] gerard at valencia dot bc dot ca
I have compiled the CVS snapshot, with the same configure options as before, and the problem still exists.  Have not compiled it with APC this time.

I have copied php.ini-dist to /usr/local/lib/php.ini


 [2001-03-10 20:04 UTC] sniper@php.net
I can't reproduce this. Please try the following script.

upload.php:

<form action="upload.php" method="post" enctype="multipart/form-data" name="admin">
<input type="file" name="userfile">
<input type=submit>
</form>

<?php 
if(isset($userfile_size) && $userfile_size) {
 copy ($userfile, "/tmp/uploaded_file");
 unlink($userfile);
}
?>

 [2001-03-11 04:25 UTC] gerard at valencia dot bc dot ca
I'm also getting the same problem with this script.

Any script, even those that work on other systems, are giving problems on my system.
 [2001-03-11 16:21 UTC] sniper@php.net
Try creating a GDB backtrace of that.

1. rm config.cache
2. Add --enable-debug to you php configure line
3. 'make clean ; make ; make install'
4. And same for apache (step 3.)
5. apachectl stop
6. gdb /path/to/httpd
7. (gdb) run -X
8. Then try that script I sent you.
9. When (if) it hangs, ctrl+c
10. (gdb) bt full
11. cut'n'paste that backtrace into this bug report.

And do all this using the LATEST CVS snapshot.

--Jani

 [2001-03-12 01:29 UTC] gerard at valencia dot bc dot ca
I have never used gdb before, but I have a feeling that it is not working correctly.

Here are the results:

root@linux:/home/install/apps/apache/apache_1.3.19# gdb /usr/local/apache/bin/httpd
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i586-pc-linux-gnu"...
(gdb) run -X
Starting program: /usr/local/apache/bin/httpd -X
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
Processing config directory: /usr/local/apache/conf/virtualhosts/magestudios.net/
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/cwolvie
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/eeno
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/ewang
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/ftp
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/g2
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/likwidx
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/mail
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/moscrop
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/mouthoff
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/pirachu
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/stats
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/web
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/www
 Processing config file: /usr/local/apache/conf/virtualhosts/magestudios.net/xtracool

Program received signal SIGINT, Interrupt.
0x4046c564 in read () from /lib/libc.so.6
(gdb) bt full
#0  0x4046c564 in read () from /lib/libc.so.6
No symbol table info available.
#1  0x81d2044 in ?? ()
No symbol table info available.
#2  0x8084bf5 in buff_read ()
No symbol table info available.
#3  0x8084b92 in saferead_guts ()
No symbol table info available.
#4  0x8083612 in read_with_errors ()
No symbol table info available.
#5  0x8083980 in ap_bgets ()
No symbol table info available.
#6  0x8093c1b in getline ()
No symbol table info available.
#7  0x8093efd in read_request_line ()
No symbol table info available.
#8  0x809459e in ap_read_request ()
No symbol table info available.
#9  0x8091104 in child_main ()
No symbol table info available.
#10 0x8091301 in make_child ()
No symbol table info available.
#11 0x809147c in startup_children ()
No symbol table info available.
#12 0x8091aec in standalone_main ()
No symbol table info available.
#13 0x809231c in main ()
No symbol table info available.
#14 0x403e4577 in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
(gdb)



 [2001-03-17 02:53 UTC] gerard at valencia dot bc dot ca
After doing some experimentation, I have realized something about Apache and PHP.

According to what 'ps aux' returns, when I run apache with PHP as I have been doing normally, it has been using from 2.5%MEM - 5.0%MEM (it varies) for each child at startup.  However, whenever I disable the PHP modules from Apache (by commenting off these lines in httpd.conf: 'LoadModule php4_module     libexec/libphp4.so' and 'AddModule mod_php4.c'), the 'ps aux' returns 0.7%MEM per child at startup.

In comparison to some other linux boxes running Apache and PHP, 2.5%MEM - 5.0%MEM is a large amount of RAM used.

Could this relate in any way to the problem that I am having with file uploads on my box?
 [2001-03-24 04:11 UTC] gerard at valencia dot bc dot ca
After recompiling PHP with a few less options in my configure line, everything is working fine!  Not sure exactly which option, when removed, got things working again.

Here is the working configure line:
'./configure' '--with-mysql=/usr/local/mysql' '--with-mm' '--enable-ftp' '--enable-inline-optimization' '--enable-magic-quotes' '--enable-sigchild' '--enable-shmop' '--enable-sockets' '--enable-sysvshm' '--enable-sysvsem' '--enable-track-vars' '--enable-trans-sid' '--enable-versioning' '--with-gd' '--with-jpeg-dir=/usr/lib' '--with-xpm-dir=/usr/X11R6' '--with-apache=../apache_1.3.19' '--with-pgsql=/usr/local/pgsql' '--with-gettext=/usr/local' '--with-mcrypt=/usr/local' '--with-imap=/usr/local/imap-2000c' '--with-mcal' '--with-ldap'


Now I can upload very large files, without any problems.

Thanks!

Gerard
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Mon Sep 23 18:01:26 2019 UTC