今天有一个使用我用制作的zblog静态插件的用户来反馈一个 php 报错的问题,报错提示为“chomd() has been disablde for security reasons”,虽然很快就给解决了,但还是记录一下,方便以后查看。

php chmod() has been disablde for security reasons  错误详解

错误解析如下:

chmod() has been disablde for security reasons

翻译:

出于安全原因,chmod() 函数已被禁用

注释:由于 chmod() 可以更改文件的权限,所以很多运维在配置 php 时,都会禁用此函数。在 chmod() 函数被禁用的情况下,如果代码里出现此函数的调用,php 就会抛出上面的错误提示!

解决方法

1、虚拟机

一般的虚拟机管理后台都有 php.ini 的设置项目,下图以阿里云(万网)虚拟机为例,可以在后台的虚拟机管理面板中,chmod() 函数的设置项,启用即可!

如果你使用的虚拟机不支持函数的禁用设置,则可以咨询虚拟机的服务商,让他们帮助解决!

chmod() has been disablde for security reasons

2、云服务器

如果你使用的为云服务器,为自建的环境(例如宝塔面板,一些环境的集成等),则可以通过修改 php 的配置文件,php.ini 来解决此问题

(1)、找到 php 的配置文件 php.ini ,并打开

(2)、搜索 “disable_functions”,并定位到其所在行,不同的配置可能“disable_functions”的值不同,但都有一个 chmod 字符串。

chmod() has been disablde for security reasons

(3)、删除上面箭头所指的 “chmod”并保存

(4)、重启 php 服务 (如果重php服务不生效,就重启一下服务器)