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
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