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 <[email protected]> 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:[email protected]]
> Sent: Monday, July 20, 2009 5:52 AM
> To: [email protected]
> 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 <[email protected]
> >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" <[email protected]
> >:
> > >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...
> > >
> > >
> >
>

Reply via email to