今天有一個使用我用制作的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 來解決此問題

国产视频app(1)、找到 php 的配置文件 php.ini ,并打開

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

chmod() has been disablde for security reasons

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

国产视频app(4)、重啟 php 服務 (如果重php服務不生效,就重啟一下服務器)