2023年3月中旬,Joomal4.2.9在本地环境测试差不多后,上传至阿里云服务器(php8),又出现了一系列问题:有的与服务器环境有关,有的是Joomla bug,有的则是本站的一些低级错误。总体归纳如下,供有需要的朋友参考,免得再踩坑。
一、SMTP邮件服务出错 @ 2023-3-25 √
问题描述:本地搭建的Joomla4+php8环境,测试SMTP邮件功能正常,但放到阿里云服务器就无法工作。而在同样的阿里云主机上,原来使用Joomla3+php8,SMTP却正常。
解决过程:
- 首先肯定是服务器环境与本地不一致所致。难道阿里云主机不支持Joomla4的某些功能?
- 中外网站一番搜索,越看问题越头大;
- 有说阿里云禁用25端口的,可我用的是465啊,而且使用Joomla3+SMTP没问题;
- 又有说要下载并配置openssl.cafile证书的,然而系统信息显示已加载,且自定义添加也没用;
- 也就在搜索中无意看到,之所以要安装openssl.cafile证书,是因为“使用fsockopen()函数提示错误”;
- 好吧,fsockopen()函数😒……在解决阿里云上新部署Joomla4时,就出现过错误,只因阿里云出于安全考虑,禁用了chmod()函数。而且其控制台,好像也同时禁用了fsockopen()函数;
- 于是,到阿里云控制台,启用fsockopen()函数,问题解决。
总结:最有效的解决办法往往是最简单的!只恨把这么简单的问题复杂化,折腾到大半夜😖
二、无法在全局设置中开启缓存 @ 2023-3-28 √
问题描述:全局设置开启缓存后,无论“保守”还是“渐进”方式,本站“会员”页面无法加载,错误提示为:
Serialization of 'Closure' is not allowed()
解决办法:据说Joomla官方已追踪到这个问题,说该错误只在4.2.3版本之前存在,4.2.5已经解决。而实际上,直到4.2.9版本问题仍然存在,详见:https://issues.joomla.org/tracker/joomla-cms/38782。至于更深层次的原因,既然有Joomla团队解决,咱就多一事不如少一事吧,反正也不怎么影响使用。2023年12月22日更新:Joomla4.4.1版本已解决。
三、智能搜索功能出错问题解决 √
(一)当使用智能搜索时,搜索结果页面的布局出现混乱,如下图所示:
解决步骤:
- 首先怀疑是二次开发的模板问题,结果更换成Jooml自带的cassiopeia模板问题依旧;
- 怀疑自开发的AutoInro插件在调整布局时出错,于是禁用,但问题仍未解决;
- 通过浏览器开发工具,仔细查看版面代码,发现平添了很多“<strong>”标签,进一步怀疑是搜索菜单定制的显示问题,于是禁用“搜索”菜单,问题不再出现;
- 逐个测试“搜索”菜单中相关选项,最后发现在关闭“高级搜索说明”功能后,错误不再出现;
- 自此怀疑是Joomla网站提供的简体中文翻译文件有问题,因为早前也出现过类似情况;
- 找到\language\zh-CN\com_finder.ini文件,发现其中很多条目不规范,特别是“<strong>”标签中,有很多不必要的空格,比如“</ strong>”和“< /strong>”等,将之规范书写后,问题解决。
总结:语言翻译代码一定要规范,如翻译字段的英文(")之间,不能再直接出现("),要使用转义符\"标注;还有(<html>)或(</html>)标签中,一定不要有多余的空格,当然,该有的还是要有,不然将会导致各种低级错误。总之一句话:代码不规范,用户两行泪😂
(二)无法搜索连续2个及以上相同中文字词
问题描述:在开启错误显示的本地测试环境中,发现搜索连续2个相同中文字词(比如“哈哈”)时,浏览器报错:Warning: Undefined array key 0 in ...\administrator\components\com_finder\src\Indexer\Language\Zh.php on line 73,但搜索单字则没问题。
解决步骤:此问题已在Joomla 4.4版本中得到官方解决。