哪个php.ini文件使用symfony server:run命令?

fivyi3re  于 2023-03-31  发布在  PHP
关注(0)|答案(4)|浏览(138)

我使用virtphp来拥有独立的环境(不同的PHP版本、扩展等)。
当我使用symfony的命令运行本地开发服务器时:

php app/console server:run

它似乎忽略了我的虚拟环境的php.ini文件(~/. virtenv/envs/myenv/etc/php.ini),例如:不加载该文件中定义的扩展名。
但是当我直接使用php内置服务器时,它工作得非常完美:

php -S 127.0.0.1:8000 --docroot=web/

这两个命令有什么不同,或者symfony做什么不同?
以下是php --ini命令的输出:

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)

这是使用命令php app/console server:run时Symfony控制器中函数phpinfo()的输出:

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)

请注意“加载的配置文件”的不同之处...当我使用php --ini命令时,它会将“加载的配置文件”替换为我的php虚拟环境中的文件,而当我使用php app/console server:run命令时,它会使用“全局”配置文件。

h9a6wy2h

h9a6wy2h1#

为了记录在案(也为了所有像我一样通过谷歌搜索到达这里的迷失灵魂):
Symfony console本身不是一个程序,它只是一个PHP脚本。因此,当你运行Symfony console时,它没有自己的php.ini或扩展目录或其他配置-它使用与所有其他PHP脚本相同的设置。(除非在运行时被覆盖-实际上可能是原始问题的情况。)

lf5gs5x2

lf5gs5x22#

此问题的解决方法是将我的虚拟环境的php.ini文件移动到etc目录中名为php的子目录。例如:
移动文件~/.virtphp/envs/my-env/etc/php.ini
~/.virtphp/envs/my-env/etc/php/php.ini

irtuqstp

irtuqstp3#

对于来到这里的“迷失的灵魂”来说,还有一件事, -当Symfony命令通过控制台调用时,Symfony至少会覆盖max_execution_time。检查console.php文件,在第12行左右有一个“set_time_limit(0)”。

mm9b1k5b

mm9b1k5b4#

把一个文件放到你的web目录中。用浏览器打开它,然后搜索php.ini,给予正确的文件。如果你直接在配置目录中查找,可能会有几个文件(cli,fpm,apache等等)

相关问题