简体   繁体   中英

What php.ini file uses symfony server:run command?

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), eg: 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. eg:

Move the file ~/.virtphp/envs/my-env/etc/php.ini

To ~/.virtphp/envs/my-env/etc/php/php.ini

Yet another piece for the "lost souls" who arrive here - Symfony does overwrite at least the max_execution_time , when Symfony commands are called through the console. Check the console.php file, there's a "set_time_limit(0)" in line #12 or so.

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM