Discuz!论坛进行环境检测时提示不支持fsockopen和pfsockopen函数

更新时间:
复制 MD 格式

在云虚拟主机上安装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!论坛进行环境检测时两个函数均显示不支持。

解决方案

  1. 登录云虚拟主机管理页面。

  2. 找到待安装Discuz!论坛的云虚拟主机,单击对应操作列的管理。

  3. 在左侧导航栏,选择高级环境设置 > PHP.INI设置。

  4. 在PHP.INI设置页面的PHP函数设置区域,选择PHP函数fsockopen设置为启动状态。

  5. 单击保存设置。

  6. 再次执行进行环境检测时,确认pfsockopen和fsockopen函数报错消失。