指令 'safe_mode' 在第 0 行未知的 PHP 中不再可用
Directive 'safe_mode' is no longer available in PHP in Unknown on line 0
当我将我的主机 PHP
版本从 5.6
更新到 7.2
时,我遇到了这个错误 PHP Fatal error: Directive 'safe_mode' is no longer available in PHP in Unknown on line 0
我该如何解决这个问题,或者我必须联系我的托管服务提供商?!
这是我的php.ini
设置文件,在我的平均路径
中找到
; cPanel-generated PHP ini directives, do not edit
; Manual editing of this file may result in unexpected behavior.
; To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
; For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)
magic_quotes_gpc = Off;
register_globals = Off;
default_charset = UTF-8;
memory_limit = 64M
max_execution_time = 36000
upload_max_filesize = 999M
safe_mode = On;
mysql.connect_timeout = 20;
session.auto_start = Off;
session.use_only_cookies = On;
session.use_cookies = On;
session.use_trans_sid = Off;
session.cookie_httponly = On;
session.gc_maxlifetime = 3600
allow_url_fopen = On
display_errors = On
;error_reporting = E_ALL;
allow_url_include = On
enable_dl = On
file_uploads = On
max_input_time = 60
max_input_vars = 1000
post_max_size = 8M
session.save_path = "/var/cpanel/php/sessions/ea3"
zlib.output_compression = Off
首先,您应该阅读 safe_mode。在文档中,将看到:
Warning: This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
其次,您可以通过删除此行来消除错误:
safe_mode = On;
注意:您必须确定找到正确的 INI 文件。某些操作系统或安装 PHP 的方法将有一个单独的 php.ini 文件用于 Web 服务器和命令行界面 (CLI)。例如,在我的 ubuntu 工作站上,我有一个用于 Apache,一个用于 CLI:
/etc/php5/cli/php.ini
/etc/php5/apache2/php.ini
要找出您应该编辑哪个 INI 文件,我建议查看 phpinfo()
的输出并查看 Loaded Configuration File 的值。要在 Web 服务器上执行此操作,请使用此文件:
<?php
phpinfo();
如果你想找出 CLI 脚本的 php.ini 文件在哪里,你可以使用这个命令:
php -i | grep "Loaded Configuration File"
如果您要更改网络服务器的 ini 文件,则需要重新启动网络服务器才能使此更改生效。在 Ubuntu 或其他基于 debian 的发行版上,您可以使用如下命令执行此操作:
sudo service apache2 restart
您可能需要调整该命令,具体取决于发行版、发行版版本、apache 版本等。我相信对于 CentOS 或基于 Red Hat 的发行版,其中一个应该有效:
sudo service httpd restart
sudo apachectl restart
注意:如果您的机器配置为使用 php-fpm 来处理 PHP 请求,那么您的 Web 服务器的工作方式会有所不同。您的系统将维护一个 PHP 进程的进程池,完全独立于您的网络服务器。您将需要重新启动 PHP 进程池。完成此操作的命令因发行版和您的 PHP 版本而异。检查 this page 是否适合您的发行版,看看是否可以找到一个可用的发行版。
对于 PHP 的 CLI 调用,每次 运行 一个新的 php 脚本时更改应该生效。您不必为新命令重新启动任何东西来查看您所做的更改。如果出于某种原因(非常不寻常)您有一些长 运行ning PHP 脚本,那么您需要停止该过程并在进行 INI 更改后重新调用它。
编辑:我还要指出,您的 INI 文件非常清楚地说明您可能会在 CPANEL 系统上遇到奇怪的行为。请务必按照其说明进行操作:
; cPanel-generated PHP ini directives, do not edit
; Manual editing of this file may result in unexpected behavior.
; To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
; For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)
当我将我的主机 PHP
版本从 5.6
更新到 7.2
PHP Fatal error: Directive 'safe_mode' is no longer available in PHP in Unknown on line 0
我该如何解决这个问题,或者我必须联系我的托管服务提供商?!
这是我的php.ini
设置文件,在我的平均路径
; cPanel-generated PHP ini directives, do not edit
; Manual editing of this file may result in unexpected behavior.
; To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
; For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)
magic_quotes_gpc = Off;
register_globals = Off;
default_charset = UTF-8;
memory_limit = 64M
max_execution_time = 36000
upload_max_filesize = 999M
safe_mode = On;
mysql.connect_timeout = 20;
session.auto_start = Off;
session.use_only_cookies = On;
session.use_cookies = On;
session.use_trans_sid = Off;
session.cookie_httponly = On;
session.gc_maxlifetime = 3600
allow_url_fopen = On
display_errors = On
;error_reporting = E_ALL;
allow_url_include = On
enable_dl = On
file_uploads = On
max_input_time = 60
max_input_vars = 1000
post_max_size = 8M
session.save_path = "/var/cpanel/php/sessions/ea3"
zlib.output_compression = Off
首先,您应该阅读 safe_mode。在文档中,将看到:
Warning: This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
其次,您可以通过删除此行来消除错误:
safe_mode = On;
注意:您必须确定找到正确的 INI 文件。某些操作系统或安装 PHP 的方法将有一个单独的 php.ini 文件用于 Web 服务器和命令行界面 (CLI)。例如,在我的 ubuntu 工作站上,我有一个用于 Apache,一个用于 CLI:
/etc/php5/cli/php.ini
/etc/php5/apache2/php.ini
要找出您应该编辑哪个 INI 文件,我建议查看 phpinfo()
的输出并查看 Loaded Configuration File 的值。要在 Web 服务器上执行此操作,请使用此文件:
<?php
phpinfo();
如果你想找出 CLI 脚本的 php.ini 文件在哪里,你可以使用这个命令:
php -i | grep "Loaded Configuration File"
如果您要更改网络服务器的 ini 文件,则需要重新启动网络服务器才能使此更改生效。在 Ubuntu 或其他基于 debian 的发行版上,您可以使用如下命令执行此操作:
sudo service apache2 restart
您可能需要调整该命令,具体取决于发行版、发行版版本、apache 版本等。我相信对于 CentOS 或基于 Red Hat 的发行版,其中一个应该有效:
sudo service httpd restart
sudo apachectl restart
注意:如果您的机器配置为使用 php-fpm 来处理 PHP 请求,那么您的 Web 服务器的工作方式会有所不同。您的系统将维护一个 PHP 进程的进程池,完全独立于您的网络服务器。您将需要重新启动 PHP 进程池。完成此操作的命令因发行版和您的 PHP 版本而异。检查 this page 是否适合您的发行版,看看是否可以找到一个可用的发行版。
对于 PHP 的 CLI 调用,每次 运行 一个新的 php 脚本时更改应该生效。您不必为新命令重新启动任何东西来查看您所做的更改。如果出于某种原因(非常不寻常)您有一些长 运行ning PHP 脚本,那么您需要停止该过程并在进行 INI 更改后重新调用它。
编辑:我还要指出,您的 INI 文件非常清楚地说明您可能会在 CPANEL 系统上遇到奇怪的行为。请务必按照其说明进行操作:
; cPanel-generated PHP ini directives, do not edit
; Manual editing of this file may result in unexpected behavior.
; To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
; For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)