I’m using virtphp to have separate environments (different PHP versions, extensions, etc).
When I use symfony’s command to run a local development server:
php app/console server:run
It seems that it ignores the php.ini file of my virtual environment (~/.virtenv/envs/myenv/etc/php.ini), e.g.: does not load the extensions definided in that file.
But when I use the php built-in server directly, it works perfectly:
php -S 127.0.0.1:8000 --docroot=web/
What’s the difference of those two commands or what does symfony do differently?
This is the output of the
php --ini command:
Configuration File (php.ini) Path: /usr/local/etc/php/5.5 Loaded Configuration File: /Users/mjuarez/.virtphp/envs/wowfi/etc/php.ini Scan for additional .ini files in: /Users/mjuarez/.virtphp/envs/wowfi/etc/php Additional .ini files parsed: (none)
This is the output of the function
phpinfo() in a Symfony controller when using the command
php app/console server:run:
Configuration File (php.ini) Path /usr/local/etc/php/5.5 Loaded Configuration File /usr/local/etc/php/5.5/php.ini Scan this dir for additional .ini files /Users/mjuarez/.virtphp/envs/wowfi/etc/php Additional .ini files parsed (none)
Note the difference in “Loaded Configuration File”… when I use the
php --ini command it replaces the “Loaded Configuration file” with the one in my php virtual environment and when I use the command
php app/console server:run it uses the “global” configuration file.
For the record (and for all lost souls who arrive here by Google search like me):
Symfony console is not a program per se. It is just a PHP script. Therefore, when you run Symfony console, it doesn’t have its own php.ini or extension directory or other configuration – It uses the same settings as all your other PHP scripts. (Unless overwritten at runtime – which actually might be the case of the original question.)
A workaround for this issue is to move the php.ini file of my virtual environment to a sub-directory called php inside the etc directory. e.g.:
Move the file
Drop a file in your web directory with inside. Open it with your browser and search for php.ini that will give you the correct file. There could be several files yf you look directy in your configuration directory (cli, fpm, apache and so on)