在云虚拟主机上安装Discuz!论坛时,系统会执行环境检测确保该论坛可以正常安装。可能由于云虚拟主机本身默认某些功能(例如PHP函数fsockopen)已关闭或无法使用,导致环境检测过程中,提示不支持fsockopen和pfsockopen函数。本文介绍这种情况的可能原因和解决方案。
问题描述
在Linux系统云虚拟主机中安装Discuz!论坛进行环境检测(例如函数依赖性检查环节)时,提示不支持fsockopen()和pfsockopen()函数。PHP 环境的函数依赖性检查结果显示,mysql_connect()、gethostbyname()、file_get_contents()、xml_parser_create() 均正常支持,但 fsockopen() 和 pfsockopen() 不支持。建议在 php.ini 中开启 allow_url_fopen 选项,请联系空间商确认已开启此项功能。
fsockopen和pfsockopen函数与Discuz!论坛的邮件功能有所关联。其中,pfsockopen是fsockopen函数的长连接版本(即当脚本执行完成后,pfsockopen函数连接一直不会关闭),两个函数作用是一样的。
问题原因
基于安全考虑,Linux系统云虚拟主机默认无法使用pfsockopen函数,但允许设置fsockopen函数功能,默认情况下,fsockopen函数功能为禁用状态,故Discuz!论坛进行环境检测时两个函数均显示不支持。
解决方案
-
登录云虚拟主机管理页面。
-
找到待安装Discuz!论坛的云虚拟主机,单击对应操作列的管理。
-
在左侧导航栏,选择高级环境设置 > PHP.INI设置。
-
在PHP.INI设置页面的PHP函数设置区域,选择PHP函数fsockopen设置为启动状态。
-
单击保存设置。
-
再次执行进行环境检测时,确认
pfsockopen和fsockopen函数报错消失。