Edit report at https://bugs.php.net/bug.php?id=63028&edit=1

 ID:                 63028
 Updated by:         larue...@php.net
 Reported by:        james dot turner dot phpninja at gmail dot com
 Summary:            Include inside Phar with "./" prefix fails to
                     include correctly
-Status:             Open
+Status:             Not a bug
 Type:               Bug
 Package:            PHAR related
 Operating System:   Ubuntu 12
 PHP Version:        5.3.16
 Block user comment: N
 Private report:     N

 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

you should make your index.php like(which will use the include_path):

<?php
require_once 'includes/bootstrap.php'


Previous Comments:
------------------------------------------------------------------------
[2012-09-07 08:57:54] james dot turner dot phpninja at gmail dot com

Description:
------------
When including a file from another file within a phar build, that has a ./ 
prefix, e.g. include_once './my/other/file.php' a "failed to open stream: No 
such file or directory in phar" warning is thrown followed by a Fatal error 
"PHP Fatal error:  require_once(): Failed opening required './my/other/file.php"


The test script below contains 3 files required to produce the same output.

structure:

.
/src
/src/index.php
/src/includes/bootstrap.php
package.php

Test script:
---------------
// package.php
<?php
if(!file_exists('test.phar')){
    try {
        $phar = new Phar('test.phar');
        $phar->buildFromDirectory('src');
        $phar->setStub($phar->createDefaultStub());
    } catch(PharException $e){
        echo $e->getMessage();
    }
} else {
    require_once ('phar://test.phar');
}


// src/index.php
<?php

require_once './includes/bootstrap.php'


// src/includes/bootstrap.php
<?

echo "hello world";

Expected result:
----------------
hello world

Actual result:
--------------
/usr/bin/php /workspace/PharTest/package.php
PHP Warning:  require_once(./includes/bootstrap.php): failed to open stream: No 
such file or directory in phar:///workspace/PharTest/test.phar/index.php on 
line 3
PHP Stack trace:
PHP   1. {main}() /workspace/PharTest/package.php:0
PHP   2. require_once() /workspace/PharTest/package.php:12
PHP   3. include() /workspace/PharTest/test.phar:9
PHP Fatal error:  require_once(): Failed opening required 
'./includes/bootstrap.php' 
(include_path='phar:///workspace/PharTest/test.phar:.:/usr/share/php:/usr/share/pear')
 in phar:///workspace/PharTest/test.phar/index.php on line 3
PHP Stack trace:
PHP   1. {main}() /workspace/PharTest/package.php:0
PHP   2. require_once() /workspace/PharTest/package.php:12
PHP   3. include() /workspace/PharTest/test.phar:9


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



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

Reply via email to