open_basedir problems with APC and Symfony2

Posted by Stephen Orr on Server Fault See other posts from Server Fault or by Stephen Orr
Published on 2012-11-06T10:41:14Z Indexed on 2012/11/06 11:05 UTC
Read the original article Hit count: 333

Filed under:
|
|
|

I'm currently setting up a shared staging environment for one of our applications, written in PHP5.3 and using the Symfony2 framework.

If I only host a single instance of the application per server, everything works as it should.

However, if I then deploy additional instances of the application (which may or may not share the exact same code, dependent on client customisations), I get errors like this:

[Tue Nov 06 10:19:23 2012] [error] [client 127.0.0.1] PHP Warning:  require(/var/www/vhosts/application1/httpdocs/vendor/doctrine-common/lib/Doctrine/Common/Annotations/AnnotationRegistry.php): failed to open stream: Operation not permitted in /var/www/vhosts/application2/httpdocs/app/bootstrap.php.cache on line 1193
[Tue Nov 06 10:19:23 2012] [error] [client 127.0.0.1] PHP Fatal error:  require(): Failed opening required '/var/www/vhosts/application1/httpdocs/app/../vendor/doctrine-common/lib/Doctrine/Common/Annotations/AnnotationRegistry.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/vhosts/application2/httpdocs/app/bootstrap.php.cache on line 1193

Basically, the second site is trying to require the files from the first site, but due to open_basedir restrictions it can't do that. I'm not willing to disable open_basedir as that is only masking the problem instead of solving it, and creates a dependency between applications that should not be present.

I initially believed this was related to a Symfony2 error, but I've now tracked it down to an issue with APC; disabling APC also solves the error, but I'm concerned about the performance impact of doing so.

Does anyone have any suggestions on what I might be able to do?

© Server Fault or respective owner

Related posts about php-apc

Related posts about php5.3