php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #1488 Problems with fopen() and fclose(): segfaults and document contains no data msg
Submitted: 1999-06-02 20:47 UTC Modified: 1999-06-18 15:48 UTC
From: fvkuipers at home dot com Assigned:
Status: Closed Package: Misbehaving function
PHP Version: 3.0.7 OS: Linux RH 5.9
Private report: No CVE-ID: None
 [1999-06-02 20:47 UTC] fvkuipers at home dot com
Consider the script:

<?

  $fp = fopen("/home/httpd/html/hit.count","w");
  echo $fp;
  /*fclose ($fp);*/

?>

Upon running this program, the code executes as expected by opening the file and allowing file IO.  However, the error log reports the following:

[Wed Jun  2 21:31:05 1999] [notice] child pid 1557 exit signal Segmentation fault (11) 

Uncommenting the third line causes a "document contains no data" error.

The value of $fp usually 1 as output by the echo statement.  In the script in which I noticed this behaviour, the program runs perfectly (except I must exclude the fclose() to avoid the "document contains no data" error).  However, doing a tail /var/log/httpd/error_log --follow  reveals a seg fault each time the page is reloaded.  Hence, it is bloating my logs!

The file in question has the following permissions:

-rwxrw-rw-   1 webmaste web             0 Jun  2 21:19 hit.count 

I couldn't produce/locate a coredump, if I do, I will add the backtrace then.

I enabled setting $php_errormsg but when I echo it it gives me an "uninitialized variable" notice.  What's with that?

I am using php3 as a module in Apache.  I downloaded both php3 and apache as rpms from the RH distribution sites:

mod_php3-3.0.7-4.i386.rpm
apache-1.3.6-7.i386.rpm

Hence, I have no idea what was compiled in...  Any ideas??  Thanks.

FK

Here is the relavant portion of my php3.ini (excluded all db related content):  

-----------------8<-------------------------------
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

engine			=	On	; enable PHP 3.0 parser
short_open_tag	=	On	; allow the <? tag.  otherwise, only <?php and <script> tags are recognized.
asp_tags		=	On ; 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)
; Safe Mode
safe_mode		=	Off
safe_mode_exec_dir	=
; 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


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

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


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; error_reporting is a bit-field.  Add each number up to get desired error reporting level
;  1 = Normal errors
;  2 = Normal warnings
;  4 = Parser errors
;  8 = Notices - warnings you can ignore, but sometimes imply a bug (e.g., using an uninitialized variable)
error_reporting	=	15
display_errors	=	On	; Print out errors (as a part of the HTML script)
log_errors	=	On	; Log errors into a log file (server-specific log, stderr, or error_log (below))
track_errors	=	On	; 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	=	/var/log/httpd/php3errors.log	; 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 ;
;;;;;;;;;;;;;;;;;
magic_quotes_gpc	=	On		; 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 \')
track_vars			=	On		; enable $HTTP_GET_VARS[], $HTTP_POST_VARS[] and $HTTP_COOKIE_VARS[] arrays
; automatically add files before or after any PHP 3.0 document
auto_prepend_file	=
auto_append_file	=


;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
include_path	=                   ; UNIX: "/path1:/path2"  Windows: "\path1;\path2"
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
;upload_tmp_dir	=	                ; temporary directory for HTTP uploaded files (will use system default if not specified)
upload_max_filesize = 2097152       ; 2 Meg default limit on file uploads
extension_dir	=	./				; directory in which the loadable extensions (modules) reside


;;;;;;;;;;;;;;;;;;;;;;
; 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.


;Windows Extensions
;extension=php3_mysql.dll
;extension=php3_nsmail.dll
;extension=php3_calendar.dll
;extension=php3_dbase.dll
;extension=php3_gd.dll
;extension=php3_dbm.dll
;extension=php3_mssql.dll
;extension=php3_zlib.dll
;extension=php3_filepro.dll
;extension=php3_imap4r2.dll
;extension=php3_ldap.dll
;extension=php3_crypt.dll
;extension=php3_msql2.dll
;extension=php3_odbc.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()


--------------8<----------------------------------

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [1999-06-05 07:27 UTC] sas at cvs dot php dot net
We need a backtrace to debug that problem. See http://bugs.php.net/bugs-generating-backtrace.php3
 [1999-06-18 15:48 UTC] sas at cvs dot php dot net
That's related to fclose() shooting the stack frame. Upgrade to a newer version of PHP.
 
PHP Copyright © 2001-2026 The PHP Group
All rights reserved.
Last updated: Sat Oct 10 02:00:02 2026 UTC