gpt4 book ai didi

php - 我如何检查 ini_set 是否可以在服务器上运行?

转载 作者:可可西里 更新时间:2023-10-31 23:10:12 27 4
gpt4 key购买 nike

我如何检查服务器配置是否允许我设置如下选项:

ini_set('upload_max_filesize', '8M');

在 PHP 脚本中?这是 php.ini directives 的列表但我真的不知道如何在尝试更改该值之前进行检查。

最佳答案

检查是否允许我对某些选项使用ini_set,怎么做?

ini_set成功时将返回旧值,失败时返回 false*。有了这些知识,您就可以编写一个语句来检查您的调用是否接通,如下所示。

$result = ini_set ("some_option", "some_value");
$failure = (version_compare(PHP_VERSION, '5.3.0') >= 0) ? false : '';
if ($result === $failure)
echo "Unable to use ini_set to change 'some_option'!";

(*):注意 PHP 5.3.0 中的返回值从 ''(空字符串)更改为 false。因此,您还需要检查当前的 PHP 版本。


另一种方法是使用 ini_get_all它将为您提供有关每个可用选项的详细信息,它是 access level .

$all_option_details = ini_get_all ();

/* see the comments in this post regarding PHP_INI_USER vs INI_USER
* seems like someone writing the relevant PHP documentation fcuked up
*
* props to @soulmerge */

if ($all_option_details['upload_max_filesize']['access'] & INI_USER)
echo "we are allowed to change upload_max_filesize from with ini_set!";

我想为某些选项禁用 ini_set,怎么做?

有几种方法可以使选项在运行时不可更改(以某种方式禁用 ini_set),其中有以下两种,您可以在提供的链接中阅读更多信息。

php_admin_value name value

Sets the value of the specified directive. This can not be used in .htaccess files. Any directive type set with php_admin_value can not be overridden by .htaccess or ini_set(). To clear a previously set value use none as the value.

php_admin_flag name on|off

Used to set a boolean configuration directive. This can not be used in .htaccess files. Any directive type set with php_admin_flag can not be overridden by .htaccess or ini_set().


示例(取自 this 文档)

<IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag engine on
</IfModule>

<IfModule mod_php4.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag engine on
</IfModule>

关于php - 我如何检查 ini_set 是否可以在服务器上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8544244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com