小编lon*_*nes的帖子

如何使用自定义php.ini覆盖php cli配置

我正在努力用我的自定义php.ini覆盖php cli配置

我的自定义php.ini

max_execution_time = 90
memory_limit = 256M
safe_mode = Off
Run Code Online (Sandbox Code Playgroud)

运行php cli

php -c /home/env/php.ini -r 'phpinfo();' | grep 'memory_limit'
Run Code Online (Sandbox Code Playgroud)

输出

memory_limit => 256M => 256M
Run Code Online (Sandbox Code Playgroud)

但是自定义php.ini似乎不会覆盖max_execution_time和safe_mode,因为它输出0和On而不是90和Off.

运行这个简单的脚本

#!/usr/bin/php -c /home/env/php.ini
<?php echo 'memory_limit: ' . ini_get('memory_limit');
Run Code Online (Sandbox Code Playgroud)

输出默认的cli配置(128M)而不是预期的256M.

运行这个简单的脚本

#!/usr/bin/php -d max_execution_time=90
<?php echo 'max_execution_time: ' . ini_get('max_execution_time');
Run Code Online (Sandbox Code Playgroud)

按预期输出90.

到目前为止,我已经设法在运行时只覆盖一个单一的配置指令,所以任何帮助都非常赞赏如何覆盖多个配置指令.

编辑:

php -a
php > parse_ini_file('/home/env/php.ini');
Run Code Online (Sandbox Code Playgroud)

输出没有错误,所以我想我的自定义php.ini是好的.我只是发现执行

#!/usr/bin/php -c /home/env/php.ini
<?php echo 'memory_limit: ' . ini_get('memory_limit'); phpinfo();
Run Code Online (Sandbox Code Playgroud)

说加载配置文件=>(无).这似乎是个问题.PHP CLI似乎没有加载我的自定义php.ini文件,即使路径是正确的,语法似乎也很好.

解:

似乎不可能在运行时使用shebang覆盖多个配置指令,至少对我而言.但删除shebang并执行以下命令为我解决了这个问题.

php -d max_execution_time=90 -d memory_limit=256M -d safe_mode=Off …
Run Code Online (Sandbox Code Playgroud)

php command-line-interface php-ini

6
推荐指数
1
解决办法
3055
查看次数

标签 统计

command-line-interface ×1

php ×1

php-ini ×1