闲逛看到一个帖子, phpBB3的论坛经常被机器人注册攻击, 要找人做拦截. 出于兴趣, 联系了一下.

论坛是一个做健康养老调查的社会机构的, 版本3.1, 十年前我还在更新phpbb中文包的时候, 版本3.0.8吧, 现在最新的是3.2.x, 下来看了一下代码, 代码结构没变, 还是那么大咧咧乱哄哄, 功能上变化还是挺大的, 原先饱受诟病的的MOD改为extension了, 像joomla那样, 安装扩展可以不用修改论坛代码, 这样版本升级会容易很多, 不需要再把所有安装了的MOD都再patch一遍(或者按升级的patch, 把论坛自己patch一遍).

这个论坛被机器人攻击的原因, 还是因为使用的是图形验证码, 这个对于现在的机器人来讲, 识别率已经很高了, 另外他们自己添加的email地址有效性验证没有加入到最终的注册提交环节, 对于机器人来说那就是畅通无阻了.

遇到的一个问题是对style里面template的修改一直无法生效, 清空cache里面的文件也没用, 后来发现是一个后台配置在控制的, 在load confirguration里面有recompile stable template的选项, 这个设置成enabled就好了. 这选项当年肯定是用过的, 时间太长, 完全不记得了 :(

升级至phpBB3.2的一些记录

首先是 install模块

执行URL和以前有很大变化, 不支持传统的 ?a=b 这样的参数格式了, 必须要用url rewrite的方式, 在phpBB3.2安装包的docs目录下, 有一个供参考的nginx配置文件 nginx.sample.conf , 但是这个只适用于安装在域名根目录下的phpBB, 如果你的phpBB是安装在子目录下, 那需要自己修改一下, 下面是我使用的conf供参考(里面混杂了两种wwwroot, 是因为我的php-fpm是从docker中启动的, 两边看到的wwwroot路径不一样.

#user  nobody;
worker_processes 1; error_log logs/error.log;
pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
index index.html index.htm index.php;
default_type application/octet-stream; sendfile on;
tcp_nopush on; keepalive_timeout 65; gzip on; server {
listen 80;
server_name localhost; #access_log logs/host.access.log main; location ~ \.php$ {
root /home/milton/WorkPHP/wwwroot;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass 172.17.0.2:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
} location / {
root /home/milton/WorkPHP/wwwroot;
index index.html index.htm index.php;
} # Correctly pass scripts for installer
location /phpbb3.2/install/ {
root /home/milton/WorkPHP/wwwroot;
index index.html index.php;
# phpBB uses index.htm
try_files $uri $uri/ @rewrite_installapp; # Pass the php scripts to fastcgi server specified in upstream declaration.
location ~ \.php(/|$) {
# Unmodified fastcgi_params from nginx distribution.
include fastcgi_params;
# Necessary for php.
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/www/html;
try_files $uri $uri/ /phpbb3.2/install/app.php$is_args$args;
fastcgi_pass 172.17.0.2:9000;
}
} location @rewrite_installapp {
rewrite ^/phpbb3.2/(.*)$ /phpbb3.2/install/app.php/$1 last;
} }
}

在执行 app.php/update 之后, 按提示进行升级.

Cron Task 和 Text Reparser

参考 https://www.phpbb.com/support/docs/en/3.2/kb/article/phpbb-32%2B-text-reparser/
在phpBB3.2之后, 使用了新的bbcode格式, 旧的内容中的bbcode并不会在升级时一并转换成新格式, 而是在升级之后的日常运行中, 通过phpBB自身的cron任务来进行Text Reparse. 如果你的文章数量很多, 那么这个进程是很漫长的, 在期间如果有用户访问这些旧格式的帖子, 就会抛出 bbcode.php on line 121 错误. 如果想手动加快这个过程, 可以通过命令行执行 bin/phpbbcli.php 来进行

$ php bin/phpbbcli.php reparser:reparse --ansi

.这个命令会将所有包含bbcode的内容: post text, user signature, poll title, poll option, pm text, forum description都转换一遍. 15K个帖子的转换时间大概是4分钟, 速度还可以.

phpBB3.1和3.2的更多相关文章

  1. python-phpbb3 (可以用python3 操作 phpbb3 论坛的模块)

    python-phpbb3 2016年8月30日 04:50:48 codegay phpbb3是PHP写的开源的论坛,python-phpbb3这个项目是用python3实现很多对phpbb3论坛操 ...

  2. phpBB3导入帖子的Python脚本

    关联的数据表 在phpBB3中导入用户时, 需要处理的有两张表, 一个是 topics, 一个是 posts.为了方便与原数据关联, 需要在这两个表上新增一个字段并建立唯一索引 ALTER TABLE ...

  3. phpBB3导入用户的Python脚本

    关联的数据表 在phpBB3中导入用户时, 需要处理的有两张表, 一个是 users, 一个是 user_group. 如果是新安装的论坛, 在每次导入之前, 用以下语句初始化: DELETE FRO ...

  4. phpBB3导入版面的Python脚本

    关联的数据表 在phpBB3中导入版面时, 需要处理的有两张表, 一个是 forums, 一个是 acl_groups. 如果是干净的论坛, 可以不保留安装时填入的默认分区和版面, 直接用以下语句初始 ...

  5. phpBB3.2 自动检测浏览器语言

    这是根据HTTP request header里的Accept-Language信息来处理的. 首先看一下Accept-Language的格式 Accept-Language: <languag ...

  6. phpBB3.2开发环境配置

    从Github导出项目 如果只是查看代码, 可以直接clone官方的git https://github.com/phpbb/phpbb.git . 如果需要开发, 就fork一下再从自己的Git里c ...

  7. 在树莓派Raspbian下安装支持Hard Float的.NET环境

    [题外话] 最近入了个树莓派玩,系统装的官方推荐的Hard Float的Raspbian,由于衍生自Debian,所以Mono什么的非常好装.但是官方源中的Mono在Hard Float的Raspbi ...

  8. raspberrypi(树莓派)上安装mono和jexus,运行asp.net程序

    参考网址: http://www.linuxdot.net/ http://www.cnblogs.com/mayswind/p/3279380.html http://www.raspberrypi ...

  9. 树莓派系统介绍:DIetPi

    项目主页:http://fuzon.co.uk/phpbb/viewtopic.php?f=8&t=6 当前版本:V34(15年4月16日发布) DietPi是国外一个基于Raspbian的精 ...

随机推荐

  1. 附9 elasticsearch-curator + Linux定时任务

    官网教程入口:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html 一.下载安装 下载:sud ...

  2. Libxml2函数及使用方法概述【转】

    https://blog.csdn.net/chengwenyao18/article/details/7176082 一.关于XML: 在开始研究 Libxml2 库之前,先了解一下XML的相关基础 ...

  3. JS 父页面调子页面(2种情况),子掉父级(1种)(转)

    A :父级调用子级页面 ,非IFRAME情况,类似平级: window.open("子页面.html", "", "width=1024,height ...

  4. axios post提交的Content-Type

    使用axios的坑 jQuery.ajax的post提交默认的请求头的Content-Type: application/x-www-form-urlencoded而axios.post提交的请求头是 ...

  5. Web UI 技术发展历程

    本文内容 纯文本和静态 HTML 页面 服务器端技术 插件技术--ActiveX.Applet 和 Flash Ajax 异步时代和基于 JavaScript 的 UI 技术 RIA--Adobe F ...

  6. OSX系统的sublime配置php执行编译

    OSX系统的sublime配置php执行编译 1).进入如下菜单 2)弹出内容如下: { "cmd": ["make"] } 修改为: { "cmd& ...

  7. HTML DOM 基础知识,成为javascript晋级高手的必备手册

    一.DOM 简介,什么是 DOM? 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口. 标记语言,也称置标语言,是一种将文本( ...

  8. 牛客网-《剑指offer》-变态跳台阶

    C++ class Solution { public: int jumpFloorII(int n) { <<--n; } }; 推导: 关于本题,前提是n个台阶会有一次n阶的跳法.分析 ...

  9. WinForm 之 程序退出

    一.关闭窗体 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.En ...

  10. vsphere产品下载列表

    https://my.vmware.com/cn/web/vmware/info/slug/datacenter_cloud_infrastructure/vmware_vsphere_with_op ...