资讯专栏INFORMATION COLUMN

神秘的.user.ini文件

URLOS / 2718人阅读

摘要:此类文件仅被处理。小白表示没看懂众所周知,是的核心配置文件,在启动时被读取,那么目录的其他文件也是可以被识别,官方还说了除了主之外,还会在每个目录下扫描文件,从被执行的文件所在目录开始一直上升到根目录所指定的。

神秘的.user.ini文件 .user.ini究竟是个神秘东东?

我们看看官方怎么说:

http://php.net/manual/zh/conf...

自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。

小白表示没看懂~

众所周知,php.ini是php的核心配置文件,在 PHP 启动时被读取,那么web目录的其他ini文件也是可以被php识别,官方还说了

除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER["DOCUMENT_ROOT"] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

这样说的话,所有的配置都可以被.user.ini重新配置修改?噢,麦噶的

你想多了,官方还说了:

在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIRPHP_INI_USER 模式的 INI 设置可被识别。

小白,又举手了,什么是PHP_INI_*模式呢?

官方是这样说的:

配置可被指定的范围(http://php.net/manual/zh/conf... )

这些模式决定着一个 PHP 的指令在何时何地,是否能够被设定。手册中的每个指令都有其所属的模式。例如有些指令可以在 PHP 脚本中用 ini_set() 来设定,而有些则只能在 php.ini 或 httpd.conf 中。

例如 output_buffering 指令是属于 PHP_INI_PERDIR,因而就不能用 ini_set() 来设定。但是 display_errors 指令是属于 PHP_INI_ALL 因而就可以在任何地方被设定,包括 ini_set()。

PHP_INI_*模式的定义

模式    含义
PHP_INI_USER    可在用户脚本(例如 ini_set())或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定
PHP_INI_PERDIR    可在 php.ini,.htaccess 或 httpd.conf 中设定
PHP_INI_SYSTEM    可在 php.ini 或 httpd.conf 中设定
PHP_INI_ALL    可在任何地方设定

也就是说只有PHP_INI_USER模式,才可以在 .user.ini 中设定,那么哪些配置可以在 .user.ini 中设定呢?

php.ini配置选项列表(http://php.net/manual/zh/ini.... )

有点意思,并不是所有的配置 .user.ini 都能修改,比如 disable_functionsupload_max_filesize

千年未解之谜,是不是在这里找到了答案?

访问php页面出现“No input file specified”,尝试各种办法(https://jingyan.baidu.com/art... ) 无果,你是否开始怀疑自己人品,是否开始怀疑肾亏了,是否觉得自己这么年轻就不行了?

绝望中,你是否发现你的网站目录中有个叫 .user.ini 的文件,一气之下,决定删了它,哦,没错,是个办法。

啥? .user.ini 删不掉,是不是觉得自己真的不行了?

[root@Tech1024]# rm -rf .user.ini 
rm: cannot remove ‘.user.ini’: Operation not permitted

来看一下,该文件的属性

[root@Tech1024]# lsattr .user.ini 
----i--------e-- .user.ini

没错,文件被锁定了,不能修改,那么我们去除文件锁定属性

[root@Tech1024]# chattr -i .user.ini

是不是可以删除了,你是不是喜极而泣,啊,自己终于又行了。

哎,小白可能觉得自己又不行了,怎么还是“No input file specified”啊?

年轻人,别着急,看看官方吧(http://php.net/manual/zh/conf... )。

user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。

……

5分钟艰难的过去了,你是否再一次喜极而泣:哎,自己终究还是行了。

.user.ini有什么用呢?
好奇请猛戳 https://lnmp.org/faq/lnmp-vho...
最后

作为一个IT职业人,不论从事什么行业,铭记两点 技术和态度,技术决定了你的存在,态度决定了你能存在多久。

原文 http://www.tech1024.com/origi...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30625.html

相关文章

  • PHP防跨站一些记录

    摘要:对于来说有种方法可以防跨站请求方法在的配置中或者在包含的文件中加入方法在中配置选项方法使用新增的配置文件在网站根目录下创建一个隐藏文件,然后写入这个文件名可以通过文件中的选项来修改名称,以及可以通过来修改生效时间,默认是秒。 对于nginx来说有3种方法可以防跨站请求 方法1 在nginx的php配置中或者在包含的 include fastcgi.conf 文件中加入: fastcgi...

    loostudy 评论0 收藏0
  • PHP防跨站一些记录

    摘要:对于来说有种方法可以防跨站请求方法在的配置中或者在包含的文件中加入方法在中配置选项方法使用新增的配置文件在网站根目录下创建一个隐藏文件,然后写入这个文件名可以通过文件中的选项来修改名称,以及可以通过来修改生效时间,默认是秒。 对于nginx来说有3种方法可以防跨站请求 方法1 在nginx的php配置中或者在包含的 include fastcgi.conf 文件中加入: fastcgi...

    marser 评论0 收藏0
  • PHP|标准配置之php.ini (1)

    摘要: [PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; PHPs initialization file, generally called php.ini, is responsible for ; configuring many of the aspects of PHPs behavior. ...

    gclove 评论0 收藏0
  • PHP open_basedir函数导致一个nginx配置问题

    摘要:于是后来加入到虚拟主机的配置文件中发现终于了。参考资料更新以后可以通过根目录下的文件进行的配置,即在网站根目录下存在文件,内容类似如下不过一些敏感的配置还是不能使用这个配置,比如参考 项目使用CI框架,从Windows平台迁移到LNMP平台上的时候发现打开首页的时候提示showImg(https://segmentfault.com/img/bVp04G);然后看到这个提示的时候下意识...

    xiangzhihong 评论0 收藏0

发表评论

0条评论

URLOS

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<