thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dvir Volk <dvir...@gmail.com>
Subject Re: wrong include paths in PHP
Date Mon, 20 Jul 2009 19:39:27 GMT
I usually use dirname(__FILE__) or $_SERVER['DOCUMENT_ROOT'] to "absolutize"
the paths before including stuff.

But anyway, even if I want to follow thrift's include logic, it still means
i have to copy my files to the right path manually,
since thrift --gen php -o <somedir> generates the file under "gen-php" in
this dir, and the generated code expects the types file to sit under
$GLOBALS['THRIFT_ROOT'].'/packages/<MyService>/'.
Doesn't it?




On Mon, Jul 20, 2009 at 10:21 PM, Mark Slee <mslee@facebook.com> wrote:

> The issue here is because of the way that PHP resolves include paths. It's
> really bizarre and unexpected, but when you say "include <relative path>" in
> PHP the path is NOT relative to the file that contains the statement, but
> rather it is relative to the directory from which the PHP interpreter was
> originally invoked.
>
> This is fine if you dump all your code into one big folder and run your
> interpreter from there, but if you want to organize your code into folders,
> the cleanest viable solution is to just switch to using absolute paths to
> reference your files. This is why we define a THRIFT_ROOT and declare all
> generated includes relative to that.
>
> There are also some benefits to using absolute paths if you are running PHP
> on Apache with APC byte-code caching enabled. The absolute paths allow you
> to avoid doing filesystem operations when you're checking for a script's
> presence in the cache, you can just treat the absolute path as a simple
> string key.
>
> -----Original Message-----
> From: Dvir Volk [mailto:dvirsky@gmail.com]
> Sent: Monday, July 20, 2009 5:52 AM
> To: thrift-user@incubator.apache.org
> Subject: Re: wrong include paths in PHP
>
> I could, but I figured since in python it's not mandatory, there might be a
> trick to achieve that in PHP as well...
>
> On Mon, Jul 20, 2009 at 3:37 PM, Patrick Schlangen <p.schlangen@mac.com
> >wrote:
>
> > Hi,
> >
> > why don't you just use the directory structure suggested by Thrift?
> > It's very logical and tidy.
> >
> > Patrick
> >
> > Am Montag 20 Juli 2009 um 02:34PM schrieb "Dvir Volk" <dvirsky@gmail.com
> >:
> > >Hi,
> > >When I'm generating php from thrift files, I always get this thing:
> > >if I generate a service called Foo, the output is 2 files, one is
> > >FooService.php and the other Foo_types.php, FooService.php will contain
> > the
> > >following include:
> > >
> > >include_once $GLOBALS['THRIFT_ROOT'].'/packages/Foo/Foo_types.php';
> > >
> > >when actually they are both located in the the same directory, and it
> > should
> > >just be:
> > >include_once 'Foo_types.php';
> > >
> > >How do I stop this behavior? It's driving me crazy editing generated
> files
> > >all the time...
> > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message