Greg Beaver wrote:

> The solution I've found for pharring things has involved clever use of 
> str_replace().  I pharred up phpMyAdmin and it works just great using this 
> technique.  This removes the need for an include_path hack.

phpMyAdmin is an interesting test case because every file access are relative 
to 
the current directory, and some global variables are used both for relative 
file 
access, and as HTTP URLs base directories. In such a case, prefixing every path 
with a stream wrapper prefix cannot work because, as a side effect, it 
generates 
some '<img src=phar://....' strings in the HTML pages.

I just had a look to the way you 'pharred' phpMyAdmin. I wanted to know how you 
solved the problem of the $pmaThemeImage global variable, which is used as a 
base 
for HTTP URLs and for file access. From what I understand, you replace it with 
an 
'http:' string, which forces every file access through the http wrapper (which 
assumes at least that url_fopen is allowed). Here, it is not just a couple of 
str_replace(), it is a real change in the software structure. And it is not the 
only one.

I understand that it is a prototype but I must say that I am skeptic about 
generalizing such an approach, even if, with the current PHP engine, there 
seems 
to be no btter one :

- With changes like this in the source code, you cannot guarantee that the 
software works the same. And I don't see who will support it when somebody 
finds a 
difference.

- If the original developers decide to support the phar packages and to 
distribute 
this format, they will want to distribute their software, at least for a given 
time, in both formats. Which means that their source code must be compatible. 
And 
filtering the files through str_replace() won't help.

- If you have to make such changes in the software code, it implies that you 
know  
the software structure very well. And the work has to be repeated for every new 
version. Just try to build a phar package from the current phpMyAdmin version 
(2.8.2) and you will see that your changes cannot work exactly as in your 
previous 
build.

For these reasons, I still consider that any PHP packaging system, PHAR or 
another one, will be greatly handicapped as long as we don't find a solution to 
the 'current directory' and 'include path' problems.

Francois

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to