php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #35176 include()/require()/*_once() produce wrong error messages about main()
Submitted: 2005-11-09 21:50 UTC Modified: 2005-11-15 12:18 UTC
From: subscription at nazarenko dot net Assigned: dmitry (profile)
Status: Closed Package: Scripting Engine problem
PHP Version: 5CVS-2005-11-10 (CVS) OS: *
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: subscription at nazarenko dot net
New email:
PHP Version: OS:

 

 [2005-11-09 21:50 UTC] subscription at nazarenko dot net
Description:
------------
According to this page:

http://www.php.net/manual/en/function.main.php

the misbehaviour was stopped in PHP 4.3.2, however it is still present in the latest 5.1.x snapshot.

In addition when require_once() or include_once() call fails and "html_errors" is "On" the error message HTML link points to the same function "require()" or "include()", without the _once() part in it.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-11-09 22:06 UTC] subscription at nazarenko dot net
A sample script:

<?php
require_once('nonexisting');
?>

Produces this HTML (html_errors=on):

<b>Warning</b>:  main(fake) [<a href='http://www.php.net/manual/en/function.main.php'>function.main.php</a>]: failed to open stream: No such file or directory in <b>x.php</b> on line <b>2</b><br />
</span>

<b>Fatal error</b>:  main() [<a href='http://www.php.net/manual/en/function.require.php'>function.require.php</a>]: Failed opening required 'fake' (include_path='.:/usr/lib/php') in <b>x.php</b> on line <b>2</b><br />


This illustrates both points:  the erroneous main() function as well as the wrong html link  (should be funtion.require-once.php)
 [2005-11-09 22:14 UTC] subscription at nazarenko dot net
Sorry, the script above should have

require_once('fake');
 [2005-11-09 22:32 UTC] tony2001@php.net
The docs are wrong - I can see the same problem in 4.3.6 and 4.3.10.
Also, I don't see an easy way to fix it, since include_*()/require_*() aren't really functions, but language constructs. 
 [2005-11-10 09:23 UTC] vrana@php.net
See also bug #21499.
 [2005-11-10 10:17 UTC] vrana@php.net
I removed the "No longer points here" column from function.main in CVS.

This is maybe not easy to fix but it's still a bug:

1. Prior to function.require error message, there's a bogus function.main error message - it should be silented.

2. require_once() points to function.require and not function.require-once, include_once() parallel.
 [2005-11-15 12:18 UTC] dmitry@php.net
Fixed in CVS HEAD and PHP_5_1.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 12:01:29 2024 UTC