ID: 21565 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Feedback +Status: Open Bug Type: Scripting Engine problem Operating System: Tru64Unix 5.1A PHP Version: 4.3.0 New Comment:
I turned all errors and warnings reporting to have maximum info. Here is a real example from my web, with real paths in filesystem. Both "include" and "require" are used to demonstrate the difference, previously, I used only "require". Strange is that in php 4.2.2 it worked fine for me. The only difference is the upgraded php dynamic module for Apache. It is not the problem of non-existing files or paths because with safe_mode = Off the included and required files are found and opened with no errors. <?php include "header.php";?> <center> <p> <b> <a href="free_catalogue.php">The Catalogue</a> </b> </p> </center> <?php require "footer.php";?> </body> </html> The output of this is: Warning: main() [function.main]: Unable to access ./header.php in /usr/users/dbminer/public_html/index.php on line 2 Warning: main(header.php) [function.main]: failed to create stream: No such file or directory in /usr/users/dbminer/public_html/index.php on line 2 Warning: main() [function.main]: Failed opening 'header.php' for inclusion (include_path='.:./:/usr/users/komanek/public_html/TEST/phpclasses:/usr/local/lib/php:/usr/local/www/apache/htdocs/MINER:/usr/users/dbminer/public_html:/usr/users/popin/html2/statistics/i') in /usr/users/dbminer/public_html/index.php on line 2 The Catalogue Warning: main() [function.main]: Unable to access ./footer.php in /usr/users/dbminer/public_html/index.php on line 11 Warning: main(footer.php) [function.main]: failed to create stream: No such file or directory in /usr/users/dbminer/public_html/index.php on line 11 Fatal error: main() [function.main]: Failed opening required 'footer.php' (include_path='.:./:/usr/users/komanek/public_html/TEST/phpclasses:/usr/local/lib/php:/usr/local/www/apache/htdocs/MINER:/usr/users/dbminer/public_html:/usr/users/popin/html2/statistics/i') in /usr/users/dbminer/public_html/index.php on line 11 >From filesystem: lib[0]:/usr/users/dbminer/public_html(07:04)# ls -al index.php header.php footer.php -rw-r--r-- 1 dbminer users 174 Oct 30 2000 footer.php -rw-r--r-- 1 dbminer users 1047 Nov 7 2001 header.php -rw-r--r-- 1 dbminer users 161 Jan 13 12:08 index.php Configure switches: --with-apache=/scratch/sources/apache_1.3.26 --with-openssl --with-zlib=/usr/local --with-zlib-dir=/usr/local --with-bz2=/usr/local --with-db --enable-dbase --with-gd --with-dom --enable-ftp --enable-gd-native-ttf --with-freetype-dir=/usr/local/freetype2 --with-iconv --with-mysql --enable-trans-sid --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib --enable-sockets --enable-discard-path --enable-safe-mode --enable-bcmatch --enable-calendar --enable-ctype --enable-mailparse --enable-force-cgi-redirect --enable-memory-limit --with-expat-dir=/usr/local --with-xml --with-gettext --with-mcrypt --with-imap=/scratch/sources/imap/imap-2002.RC2 --with-imap-ssl=/scratch/sources/imap/imap-2002.RC2 --disable-cgi Previous Comments: ------------------------------------------------------------------------ [2003-01-13 17:45:48] [EMAIL PROTECTED] Do you get any other warning/error messages, something about UID of the script not matching that of the file? ------------------------------------------------------------------------ [2003-01-13 17:37:23] [EMAIL PROTECTED] updated the summary line. ------------------------------------------------------------------------ [2003-01-13 04:09:18] [EMAIL PROTECTED] Well, you are right with the difference fatal error vs. warning. After I turned the warning messages on I can see the difference. So, the problem should be re-classified as a problem of both include and require. Still, with safe_mode on, it does not work, with safe_mode off, it works fine. ------------------------------------------------------------------------ [2003-01-10 16:56:46] [EMAIL PROTECTED] It is likely that your error reporting level is such that warning messages do not get shown. Unlike require which fails with an error include will only output a warning on failure. Beyond that there is very little difference between the require/include code none of which is the code reponsible for actually openning files. ------------------------------------------------------------------------ [2003-01-10 03:35:37] [EMAIL PROTECTED] After upgrade from PHP 4.2.2 to 4.3.0 I encountered the problem with safe_mode in conjunction with require(). Example: [php.ini] safe_mode = On; include_path = ".:./:/path/to/my/app/dir"; safe_mode_include_dir = ".:./:/path/to/my/app/dir"; [/path/to/my/app/dir/index_working.php] - works fine for me <?php include "header.php"; ?> [/path/to/my/app/dir/index_buggy.php] - throws error <?php require "header.php"; ?> The error: [error] PHP Fatal error: main() [<a href='http://www.php.net/function.main'>function.main</a>]: Failed opening required 'header.php' (include_path='.:./:/path/to/my/app/dir') in /path/to/my/app/dir/index_buggy.php on line 2 Operating system: Tru64Unix 5.1a Webserver: Apache 1.3.26 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=21565&edit=1