ID:               46194
 User updated by:  xuefer at gmail dot com
 Reported By:      xuefer at gmail dot com
-Status:           Feedback
+Status:           Open
 Bug Type:         PHAR related
 Operating System: linux
 PHP Version:      5.3CVS-2008-09-29 (CVS)
 Assigned To:      cellog
 New Comment:

ok, it seems fixed with your patch, but i don't think it right. why
filename can be NULL before it is past to compile file?
with php5.2-CVS cgi-fcgi:
No input file specified.
with php5.3-CVS and phar patch (or disable phar)
Fatal error: Unknown: Failed opening required '' (include_path='.:') in
Unknown on line 0

something changed in cgi, many zend extensions might be affected

$ diff ~/src/php/php5.2/sapi/cgi/cgi_main.c 
~/src/php/php5/sapi/cgi/cgi_main.c
yeah... there are big changes
$ diff -u ~/src/php/php5.2/sapi/cgi/cgi_main.c 
~/src/php/php5/sapi/cgi/cgi_main.c |grep 'No input file specified' -C 5
+                       SG(sapi_headers).http_response_code = 403;
+                       PUTS("Access denied.\n");
                    } else {
-                       len += strlen(argv[i]);
+                       SG(sapi_headers).http_response_code = 404;
+                       PUTS("No input file specified.\n");
+                   }
+                   /* we want to serve more requests if this is
fastcgi
+                      so cleanup and continue, request shutdown is
+                      handled later */
+                   if (fastcgi) {
--
-           if (errno == EACCES) {
-               SG(sapi_headers).http_response_code = 403;
-               PUTS("Access denied.\n");
-           } else {
-               SG(sapi_headers).http_response_code = 404;
-               PUTS("No input file specified.\n");
-           }
-#if PHP_FASTCGI
-           /* we want to serve more requests if this is fastcgi
-              so cleanup and continue, request shutdown is
-              handled later */


i'm not sure when will 5.3 cgi-fcgi prints out "No input file
specified" which used to be print by 5.2, are you?

summary:
1. "Fatal error" just does not make sense here. it should be legal to
pass any request including which might cause "404 File not found", from
the webserver to php cgi-fcgi backend, and php should issue 404 error
like 5.2 does

otherwise i have to set up
a. webserver(frontend) on server1 -> webserver + mod_php(backend) on
server2, or
b. webserver(frontend, check-local=disabled) on server 1 ->
webserver(backend, check-local=enabled to produce 404) -> php cgi-fcgi
(backend)

2. passing file_handle == NULL || file_handle->filename == NULL does
not make sense, it breaks zend extensions that hook zend_compile_file,
like phar, apc, ZendOptimizer, XCache, Xdebug, eaccelerator,
blahblah...

as you assigned it to phar category, i ask your advise


Previous Comments:
------------------------------------------------------------------------

[2008-09-29 13:02:10] [EMAIL PROTECTED]

Please try this simple patch found at
http://pear.php.net/~greg/fixbug46194.patch.txt

Index: ext/phar/phar.c
===================================================================
RCS file: /repository/php-src/ext/phar/phar.c,v
retrieving revision 1.370.2.45
diff -u -r1.370.2.45 phar.c
--- ext/phar/phar.c     13 Sep 2008 22:30:55 -0000      1.370.2.45
+++ ext/phar/phar.c     29 Sep 2008 13:00:22 -0000
@@ -3286,6 +3286,9 @@
        int failed;
        phar_archive_data *phar;

+       if (!file_handle || !file_handle->filename) {
+               return phar_orig_compile_file(file_handle, type
TSRMLS_CC);
+       }
        if (strstr(file_handle->filename, ".phar") &&
!strstr(file_handle->filename, "://")) {
                if (SUCCESS ==
phar_open_from_filename(file_handle->filename,
strlen(file_handle->filename), NULL, 0, 0, &phar, NULL TSRMLS_CC)) {
                        if (phar->is_zip || phar->is_tar) {


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

[2008-09-29 11:13:16] [EMAIL PROTECTED]

Seems to be PHAR related issue (once again) so the quick fix: disable
phar. This is quite critical bug..

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

[2008-09-29 03:13:05] xuefer at gmail dot com

Description:
------------
i have setup lighttpd + fastcgi + php, it used to work with old php but
not with 5.3 (not sure about 5.2)

  "localhost:1026" => (
    "host" => "127.0.0.1", "port" => 2048,
    "check-local" => "disable", "disable-time" => 1,
    "broken-scriptfilename" => "enable",
    ),
be aware that it is check-local => disable, which mean lighttpd won't
check if the file is exists but will forward the request to php anyway
when i try to request a non existing file, php SIGSEGV

Program received signal SIGSEGV, Segmentation fault.
0x4b319f51 in strstr () from /lib/libc.so.6
(gdb) bt
#0  0x4b319f51 in strstr () from /lib/libc.so.6
#1  0x082292c1 in phar_compile_file (file_handle=0xbfec434c, type=8) at
/home/xuefer/src/php/php5/ext/phar/phar.c:3294
#2  0x0849d9b2 in zend_execute_scripts (type=8, retval=0x0,
file_count=3) at /home/xuefer/src/php/php5/Zend/zend.c:1189
#3  0x08433dbb in php_execute_script (primary_file=0xbfec434c) at
/home/xuefer/src/php/php5/main/main.c:2080
#4  0x0852e362 in main (argc=3, argv=0xbfec44b4) at
/home/xuefer/src/php/php5/sapi/cgi/cgi_main.c:1980
(gdb) up
#1  0x082292c1 in phar_compile_file (file_handle=0xbfec434c, type=8) at
/home/xuefer/src/php/php5/ext/phar/phar.c:3294
3294        if (strstr(file_handle->filename, ".phar") &&
!strstr(file_handle->filename, "://")) {
(gdb) p file_handle[0]
$2 = {type = ZEND_HANDLE_FILENAME, filename = 0x0, opened_path = 0x0,
handle = {fd = 0, fp = 0x0, stream = {handle = 0x0, isatty = 0,
      mmap = {len = 0, pos = 1, map = 0x83f, buf = 0xb7f14878
"j®\t\b\020ii\r", old_handle = 0xb7f15000, old_closer = 0x807ba17},
      reader = 0x4b2b9840, fsizer = 0x805f4a4, closer = 0x1}},
free_filename = 0 '\0'}




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


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

Reply via email to