joomla

大象笔记 > 标签 > joomla

docker 误朕,Joomla 发送邮件超时失败,原因竟是 docker 默认不支持 IPv6

前几天迁移 Joomla 服务器到半夜 11 点多,最后发现发送邮件失败,总是报超时。太困实在扛不住了,而且第二天要上线公司内部的 CRM 微信小程序,老板要体验,不敢怠慢,于是决定速速睡觉,缓缓再排查邮件发送失败的问题。今天,CRM 小程序终于上线了,赶紧定位了一下邮件问题。 Joomla 是何物 Joomla 是一个开源的内容管理系统(CMS),用于构建网站和在线应用程序。 适用于构建各种类型的网站,包括企业网站、电子商务平台、小型企业网站、社区门户网站、学校网站,以及个人主页。类似于 Wordpress,也是由世界上最好的语言 PHP 开发。 问题现象 提交数据后,默认会将提交信息发送 ...

阅读全文...

基于 docker compose 部署 Joomla 新站的流程

新增 docker 容器挂载目录 在开发机上编辑 docker-compose.yml 配置文件,新增需要挂载的目录。然后提交保存。 将配置文件更新到服务器上。重启 docker fpm 容器,使挂载目录生效。 docker compose stop phpfpm82 docker compose up -d phpfpm82 确认目录已存在 docker 比较贴心的一点是,设置的挂载目录,如果不存在,会自动创建这些目录。而不需要手动去逐一创建。如果不放心,可以手动验证一下: docker compose exec phpfpm82 /bin/bash ls xxx 修改目录权限 因为 U ...

阅读全文...

Joomla & Helix 无法上传图片的问题排查

问题现象 在 Joomla 后台编辑一篇文章,上传 Helix3 Blog Options 选项卡中的 Featured Image 时,总是显示图片裂开, 及上传图片失败。 确认上传图片接口是否报错 从浏览器的开发者工具中,网络请求列表看,上传接口是返回正常 200 状态码。 返回的 json 数据结构也显示正常。但就是看不到图片。 到服务器上确认权限问题 切换为 www-data 用户 sudo su -l www-data -s /bin/bash 然后在 images 目录下尝试新建一个文件,确实可以成功创建,说明不是目录权限问题。 原来是 php 配置的问题 绝望了,最后还是 Go ...

阅读全文...

Joomla 安装 EasyBlog 插件后,博客页面报错无法打开

Joomla 迁移到新服务器后,EasyBlog 相关的页面,报 500 错误无法打开。但是非 EasyBlog 的页面,例如产品介绍相关的页面,是可以正常显示的。 报错信息 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER' 系统环境 MySQL 8.0.37 PHP 8.2 NO_AUTO_CREATE_USER 是什么 要解决问题,首先要明白问题是什么。如果不了解具体错误,很容易被网上的解决方案误导。 Previously, before NO_AUTO_CREATE_USER was d ...

阅读全文...

Joomla 5 SP Page Builder Pro 添加 Captcha V2 验证组件

在升级 Joomla 5 之后,发现 SP Page Builder Pro 的询盘表单 Contact Form 无法添加之前的 Captcha 组件。 在使用了 Github 上最新的 Captcha V3 组件之后,测试还是无法使用。总是提示 Captcha 插件没有启用或激活。 而实际上是已经启动并激活的。 换用了 Invisible 版本,也不行,因为即便组件没有加载,或者验证不通过,也依然可以提交询盘信息。 从 Joomla 的官方论坛看,是 SP Page Builder Pro 尚不支持。 但是还是找到了一个解决方案,参考链接 https://dj-extensions.com ...

阅读全文...

在 Nginx 日志中记录请求的真实 IP,而非 CloudFlare 的节点 IP

最近发现 Joomla 搭建的网站中出现了大量的垃圾评论。 从 Nginx 日志里的行为看是通过程序自动提交的,而非手动提交。因为提交成功后,没有自动跳转到成功页。 暂时不确定对方是如何绕过 recaptcha V2 的验证组件的。。。 于是,想先通过简单粗暴的方式,看看对方的请求 IP 是否有规律。(虽然希望渺茫) 但 Nginx access log 记录的是 cloudflare 节点的 IP (reverse proxy network),而非用户的真实 IP。 查询了一下如何通过更改 Nginx 配置来记录访客的真实 IP。 配置 有个 github 上的配置,可以参考: https ...

阅读全文...

Joomla 如何记录日志

在修改 Joomla 代码时,为了方便调试,经常要打印日志。下面记录一下,如何在 Joomla 中记录日志。 示例代码 JLog::add('my error message', JLog::ERROR, 'zhongwei-debug'); 参数说明 第一个参数:日志内容 第二个参数:日志级别,包含 JLog::EMERGENCY, JLog::ALERT, JLog::CRITICAL, JLog::ERROR, JLog::WARNING, JLog::NOTICE, JLog::INFO, JLog::DEBUG 第三个参数:日志分类。方便过滤日志的,或者日志分组。类似 Andro ...

阅读全文...

Joomla 如何获取当前页面的 URL

例如,需要在 Joomla 提交询盘信息时,在邮件中附加上当前页面的 URL 信息。那么就需要能够获取到请求页面的链接字符串。 获取当前页面的 URL use Joomla\CMS\Uri\Uri; $uri = Uri::getInstance(); $url = $uri->toString(); 或者: use Joomla\CMS\Uri\Uri; $uri = Uri::getInstance(); echo "Page URI is: " . $uri->toString() . "<br>"; 打印调试日志 u ...

阅读全文...

Joomla 收到大量垃圾询盘信息,在 php 代码中屏蔽关键词

Joomla 网站收到了大量的垃圾询盘信息,几乎一秒一条,即浪费精力去清理,又占用了处理线程,拖慢了网站速度。 所以必须在发送邮件前,就过滤掉。 修改哪个代码文件 太久不看,已经忘记了需要修改哪个代码文件。但是好在记住了一个变量名 emailBody, 这样就定位到了: > grep emailBody -r components/ components/com_sppagebuilder/addons/form_builder/site.php: $emailBody = ''; 先备份 不想在线上用 git 管理,担心有漏洞,还是简单粗暴的使用 cp 备份 ...

阅读全文...