hu60wap6 是一个社区系统
由PHP编写
界面简洁,十分简洁,特别简洁,就像非智能手机时代的移动端网页
嗯,这个风格确实的从非智能手机时代继承过来的
hu60wap6 的主要功能有:论坛、聊天室、内信、@Ta、文件图片上传、发言中插入音频视频
其他功能有:编程常用的编码解码器、HTTP请求查看器(可看浏览器UA)
它使用GPLv3协议发布
本项目包含两个子模块,所以建议采用git来克隆项目及其所有子模块,命令如下:
git clone --recursive https://gitee.com/hu60t/hu60wap6.git
如果你已经克隆了项目,但不包含子模块,可以通过以下命令获取:
git submodule init
git submodule update
如果你是下载的源代码压缩包,就需要手动获取子模块并放到对应位置,请参考这个文件中的url和path:
.gitmodules
网站源代码使用符号连接处理在不同位置有多个内容相同的文件这种情况,而符号连接在压缩解压文件时很容易丢失。
如果网站运行在Windows中,建议在WSL内git clone或者解压zip,以保留符号连接。
如果网站运行在Linux中,请不要在Windows中解压源代码然后重新打包,否则符号连接会丢失。你可以考虑直接在Linux里通过命令行下载源代码并解压,或者使用git clone命令获取源代码。
如果你使用Linux桌面,不建议使用Linux版360压缩,它也不支持符号连接。
对于安卓,请不要把源代码放在存储卡或者模拟存储卡(/sdcard或者/storage),因为这两者都不支持符号链接。如果你没有root权限,只有终端模拟器(比如Termux)提供的内部存储目录支持符号链接。因为源代码无法放置在模拟存储卡,所以虎绿林事实上与安卓上的图形界面web服务器不兼容,只能在终端模拟器内使用命令行web服务器运行。
此外,在Git for Windows中启用符号连接支持也无法解决该问题,参见步骤8中的描述。
如果符号连接已经丢失,你会遇到配置文件"site.info"不存在错误,请按照步骤8中的说明手动复制文件以解决问题。注意site_info.conf复制到目标文件夹后需要改名为info.conf。
但是步骤8中要复制的文件并不是完整列表。虎绿林一直在增加对符号连接的使用,完整列表目前已经无法列举,我也不想列举。请使用WSL,对自己好一点。对于安卓,很遗憾,谷歌选择让模拟存储卡不支持符号连接,所以虎绿林只能与安卓上的图形界面web服务器说拜拜。
-
把
src文件夹里的全部文件放在网站根目录。 -
如果你使用Linux,可以用如下命令取代下面两步:
# 先cd到网站根目录 php script/init.php如果你使用Windows,上面的命令可能不能用,请按照下面两步的说明手动复制文件。
-
进入网站根目录,把
config.inc.default.php复制一份,改名为config.inc.php。然后再把config文件夹里的所有xxx.default.php都复制一份,改名成 xxx.php,去掉.default。如果你准备用git进行版本控制,建议采用复制而不是删除原文件或者直接给原文件重命名。也就是说,把
config.inc.default.php复制为config.inc.php,再把config/xxx.default.php复制为config/xxx.php。 -
进入
config/tpl文件夹,把site_info.default.conf复制一份,改名为site_info.conf。也就是说,把
config/tpl/site_info.default.conf复制为config/tpl/site_info.conf。 -
修改
config/db.php,填写好 mysql 信息。 -
导入
db/mysql.sql到数据库。 -
访问。
-
在Windows中,你可能会遇到这样的错误:
Syntax error in config file 'conf:site.info' on line 1 '../../../../config/tpl/site_info.conf'或者这样的错误:
Fatal error: Uncaught PageException: 配置文件 "site.info" 不存在这是因为你所使用的Windows版解压缩软件或者git工具不支持符号连接,所以就把链接的源位置做为文本内容保存在了目标位置。 要解决该问题,你需要把多个文件从源位置复制到目标位置,分别是:
src/config/tpl/site_info.conf->src/tpl/classic/html/site/info.conf(注意文件要改名为info.conf)src/config/tpl/site_info.conf->src/tpl/jhin/html/site/info.conf(注意文件要改名为info.conf)- 还有更多无法列举,包括各种js文件,虎绿林越来越依赖符号链接,所以请在WSL中通过
git clone获取源代码,对自己好一点。
此外还需要提醒你的是:不要将你的这些更改提交到git版本库,因为我们希望保留符号连接,而不是多个相同文件的复制品。
如果你想要避免这些麻烦,建议在WSL(Windows Subsystem of Linux,适用于Linux的Windows子系统)中运行
git clone来获得源代码,WSL中的git可以正确创建符号连接。此外,你也可以在WSL中运行web服务器。新版本的
Git for Windows如果启用相关选项,也可以创建符号连接,但不适用于本项目。因为在clone本项目时,符号连接的源文件并不存在,所以Git for Windows只会创建内容为源文件位置的文本文件做为替代。对于安卓,请不要把源代码放在存储卡或者模拟存储卡(
/sdcard或者/storage),因为这两者都不支持符号链接。如果你没有root权限,只有终端模拟器(比如Termux)提供的内部存储目录支持符号链接。因为源代码无法放置在模拟存储卡,所以虎绿林事实上与安卓上的图形界面web服务器不兼容,只能在终端模拟器内使用命令行web服务器运行。 -
uid 为 1 的用户会成为系统的管理员用户,可以访问后台(虽然后台只有添加版块这一个功能,修改版块的功能是崩溃的。)
-
要让附件上传功能生效,不仅需要正确设置七牛云AK/SK,修改html中的域名,还需要正确安装本项目的
nonfree子模块,参考“源代码获取说明”一节。 -
要让防CC功能生效,对于Linux,需要允许PHP访问
/dev/shm文件夹(该文件夹为Linux内的共享内存文件夹)。如果是Apache,使用如下配置:
php_admin_value open_basedir "web根目录:其他路径:/dev/shm/"
如:
php_admin_value open_basedir "/var/www/hu60.cn/src/:/tmp/:/usr/share/phpmyadmin/:/usr/share/php/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/dev/shm/"
对于Windows,请修改config.inc.php中的路径($CC_DATA等)为Windows路径,并创建对应的文件夹。
- PHP 7
- PHP 8
- PHP 5
为了兼容PHP8.1,放弃了与PHP5的兼容性。
- 下载源代码,按照上面的说明进行安装。网站根目录是源代码目录中的
src文件夹,所以下面说的文件夹路径均省略src。 - 访问网站并切换到
经典主题。因为经典主题比较容易修改。 - 进入
tpl/classic/html/index文件夹(经典主题的文件夹),里面的index.tpl就是首页的内容。按照你的想法改变其html代码,但是在不了解的情况下,不要动任何位于花括号({})里面的内容,这里面的内容是smarty模板标记。 - 进入
tpl/classic/css文件夹,里面的default.css就是默认css,随你修改。night.css是对应的夜间模式css。 tpl/classic/img文件夹里面是图片,比如hulvlin2.gif是默认logo。里面的face文件夹放的是表情包。表情包的文件名命名规则详见 这里。tpl/classic/html/bbs里面是论坛各种页面的模板。基本上打开文件你就知道是哪个页面了。随意修改。tpl/classic/html/user是用户中心,tpl/classic/html/addin里面有聊天室的模板,等等。- 如果你想要修改网页的头部和尾部,那么在
tpl/classic/html/comm里面,分别是head.tpl和foot.tpl。
- 下载源代码,按照上面的说明进行安装。网站根目录是源代码目录中的
src文件夹,所以下面说的文件夹路径均省略src。 - 进入
tpl文件夹,把classic或者jhin文件夹复制一份。复制哪个取决于你想拿哪个做为基础主题进行改造。classic较为简单,但是使用的是较老的模板技术。jhin更复杂,并且使用了模块化(block)取代classic的include。 - 接下来,打开
sub/reg_page_bid.php,在最后一行添加page::regTpl('你的主题文件夹名称'); - 访问
http://你的域名/q.php/link.tpl.你的主题文件夹名称.html切换到你的主题。 - 开始修改你的主题吧。
tpl/主题名称下的目录结构还是比较简单的。html文件夹里面是页面的smarty模板,放在和url中第一部分同名的目录中。比如http://你的域名/q.php/bbs.topic.xxx.html对应的PHP文件是page/bbs/topic.php,它里面加载了tpl:topic这个模板,对应的就是tpl/主题名称/html/bbs/topic.tpl。 - smarty的模板分隔符是默认的
{}。 - 引用模板(
{include file="这里"})填写的模板名称格式是这样的:tpl:模板文件名或tpl:目录名.模板文件名,如tpl:topic或者tpl:bbs.topic,带目录名.的主要是访问与当前文件不在同一目录的模板。同样的,主题下的配置文件(*.conf)也可以用类似的名称引用:conf:配置文件名或者conf:目录名.配置文件名。 tpl/主题名/html/comm里面的是公共模板,可以放被各个页面引用的模板比如header、footer等。- 模板中有一些可用的全局变量,比如:
$CIDclass id,也就是url的第一部分,比如http://你的域名/q.php/bbs.topic.xxx.html中的bbs$PIDpage id,也就是url中的第二部分,比如http://你的域名/q.php/bbs.topic.xxx.html中的topic$BIDbreed id,也就是url中的最后一部分,相当于扩展名,比如http://你的域名/q.php/bbs.topic.xxx.html中的html$USER当前用户对象,class/user.php下User类的实例。注意当前用户可能未登录($USER->islogin == false)从而某些属性拿不到。$PAGE当前页面对象,class/page.php下Page类的实例。$PAGE对象可以用来获取当前页面URL中的各种其他细节,也可以用来获取一些静态资源的绝对路径(比如{$PAGE->getTplUrl("img/hulvlin2.gif")},获取tpl/主题名称/img/hulvlin2.gif这个文件的绝对URL)。
- 模板中可以直接调用PHP函数,比如
{date('Y-m-d')}或者静态类方法{str::ago(time()-30)}。 - 如果要输出由用户编写的内容,记得调用
|code修饰器来进行htmlspecialchars()操作,比如:{$topic.content|code}。