#47070 [Opn->Bgs]: php_stream_locate_url_wrapper fails without authority section

From: Date: Thu, 15 Jan 2009 15:26:35 +0000
Subject: #47070 [Opn->Bgs]: php_stream_locate_url_wrapper fails without authority section
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-132906@lists.php.net to get a copy of this message
 ID:               47070
 Updated by:       jani@php.net
 Reported By:      darrel dot opry at gmail dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Streams related
 Operating System: Ubuntu 8.10
 PHP Version:      5.2.8
 New Comment:

RTFM: http://www.php.net/fopen  (look for explanation what
PHP expects
the filename parameter to look like...you can put as many RFCs here, but
it's never said anywhere that fopen() expects some RFCs style scheme..
:)


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

[2009-01-12 03:01:10] darrel dot opry at gmail dot com

Description:
------------
php_stream_locate_url_wrapper fails without authority section.

If a URL is not in the Common Internet Scheme Syntax
(scheme://<<user>:<pass>@>host<:port>/url-path) the scheme is not be
located properly. So URLs of scheme:relative/path and
scheme:/absolute/path will not be handled by the registered user defined
stream wrapper.

see http://www.ietf.org/rfc/rfc1738.txt for URL
specific syntax.

see section 3 of
http://labs.apache.org/webarch/uri/rfc/rfc3986.html#intro
for URI
syntax.

Reproduce code:
---------------
<?php

class wrapper {
  function stream_open() {
    print_r(func_get_args());
    return TRUE;
  }
}

stream_wrapper_register('public', 'wrapper');

fopen('public:path/file.txt', 'r+');
fopen('public:/path/file.txt', 'r+');
fopen('public://path/file.txt', 'r+');


Expected result:
----------------
I expect wrapper::stream_open to be called and fopen to print_r the
function arguments.

Array
(
    [0] => public:path/file.txt
    [1] => r+
    [2] => 4
    [3] => 
)
Array
(
    [0] => public:/path/file.txt
    [1] => r+
    [2] => 4
    [3] => 
)
Array
(
    [0] => public://path/file.txt
    [1] => r+
    [2] => 4
    [3] => 
)

Actual result:
--------------
Warning: fopen(public:path/file.txt): failed to open stream: No such
file or directory in
/home/dopry/public_html/drupal-media/sites/default/modules/media/resource/test.php
on line 13

Warning: fopen(public:/path/file.txt): failed to open stream: No such
file or directory in
/home/dopry/public_html/drupal-media/sites/default/modules/media/resource/test.php
on line 14
Array
(
    [0] => public://path/file.txt
    [1] => r+
    [2] => 4
    [3] => 
)



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


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



Thread (8 messages)

« previous php.bugs (#132906) next »