How to correctly use `.user.ini`-file in PHP?

旧时模样 提交于 2019-12-21 08:31:37

问题


In my working directory I have two files: index.php and .user.ini:

.user.ini:

display_errors=on

; http://be2.php.net/manual/en/filter.configuration.php#ini.filter.default
;filter.default = "full_special_chars"

index.php:

<?php
//ini_set("display_errors", "on");

// Use `.user.ini` file:
// http://php.net/manual/en/configuration.file.per-user.php
echo "Setting for 'user_ini.filename': " . ini_get("user_ini.filename");
echo "\n\n";


// It takes up to five minutes, until `.user.ini` is re-read:
echo "Setting for 'user_ini.cache_ttl': " . ini_get("user_ini.cache_ttl");
echo "\n\n";

// http://php.net/manual/en/function.ini-get.php
echo "Setting for 'display_errors': " . ini_get("display_errors");
echo "\n\n";
echo "Setting for 'filter.default': " . ini_get("filter.default");
echo "\n\n";

// php -S localhost:8000
// http://localhost:8000/

Using the above .user.ini-file (in my working directory) I expect the "Setting for 'display_errors': " having a value of on or 1, but it's empty.

How to correctly change settings using the .user.ini-file?

running php --ini results in

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/05-opcache.ini,
/etc/php5/cli/conf.d/10-pdo.ini,
/etc/php5/cli/conf.d/20-json.ini,
/etc/php5/cli/conf.d/20-readline.ini

which does not contain my .user.ini-file.

Explicitly adding the .user.ini-file works:

php --php-ini .user.ini index.php

but I'd like it to be automatically read when running the script from a given folder.


回答1:


In the documentation it says:

These files are processed only by the CGI/FastCGI SAPI

and

If you are using Apache, use .htaccess files for the same effect.

So if you run PHP as an Apache module, from the commandline, or using the builtin-Server, the .user.ini-files are not processed.

To find out your Server API, simply generate a PHP script with the following content and call it in your webbrowser:

<? phpinfo();



回答2:


According to http://php.net/manual/en/configuration.file.per-user.php

Check user_ini.filename in your main php.ini to make sure it's not blank and it is indeed parsed. If its value is blank then PHP doesn't scan at all.

Also see the value of user_ini.cache_ttl

Please take a look at

php.net manual

Also check this question out Loading a .user.ini PHP conf file using the PHP 5.4 internal server?



来源:https://stackoverflow.com/questions/32179160/how-to-correctly-use-user-ini-file-in-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!