PHPCMS V9自定义伪静态实现列表页/分页/内容页

phpcms V9 栏目伪静态的修改方法(支持自定义目录名),官方程序默认伪静态是不支持自定义栏目名的,所以今天就做了以下修改,让其支持!

首先看urlrewrite的规则,这个是Apache下的,其它环境下的规则自己转换下

URL规则栏目页:{$categorydir}{$catdir}/|{$categorydir}{$catdir}/index_{$page}.html

URL规则内容页: {$categorydir}{$catdir}/{$id}.html|{$categorydir}{$catdir}/{$id}_{$page}.html

1、打开phpcms\modules\content目录下的index.php找到 public function lists() {,将

替换成:

增加一个方法,用于将catdir转换为catid

然后在phpcms后台,添加两条自定义的URL规则

然后再更新栏目缓存、批量更新URL就可以看到效果了

找到 //URL规则下面的

替换为

2、打开phpcms\modules\content\classes目录中的url.class.php,找到

if (!$setting[‘ishtml’]) { //如果不生成静态

将下面的:

替换成

更新栏目缓存就OK了。

分页问题处理

 

发表在 CMS相关问题汇聚 | 标签为 , | 一条评论

使用终端命令行将本地项目上传到Git并提交代码

一、上传项目

  • 第一步: 建立本地仓库cd到你的本地项目根目录下,执行git命令

  • 第二步: 将本地项目工作区的所有文件添加到暂存区

  • 第三步:将暂存区的文件提交到本地仓库

  • 第四步: 在Git上创建自己的repository
  • 第五步:将本地仓库关联到Git上

  • 第六步:最后一步,将代码由本地仓库上传到Git远程仓库

提交代码

  • 第一步: 查看目前代码的修改状态:

  • 第二步: 查看代码修改的内容

如果该文件已暂存,那么应该使用

  • 第三步: 暂存需要提交的文件

    如果是新建的文件
    git add <file>

    如果是修改的文件
    git add <file>

    如果是删除的文件
    git rm <file>

  • 第四步 : 提交已暂存的文件

  • 第五步: 同步到服务器

    同步到服务器前先需要将服务器代码同步到本地

    命令: git pull

    如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。

    命令:git checkout – <有冲突的文件路径>

    同步到服务器

    命令: git push origin master

发表在 应用工具软件 | 标签为 | 留下评论

Nginx 502 Bad Gateway 自动重启脚本

推荐脚本

需要确保系统已安装curl,centos可以执行:yum install curl,debian/ubuntu可以执行:apt-get install curl

winscpvi有或nano在/root目录下创建502.sh 内容如下:

crontab 一分钟执行一次。上面的https://www.vpser.net改成你的地址,如果该页面是静态,需换成以php的页面地址。
crontab 教程:https://www.vpser.net/manage/crontab.html

其他的重启脚本,下面这个如果php函数里禁用了shell_exec 将无法使用。

crontab 一分钟执行一次。 url和cmd根据自己的改。

原理就是用curl获取HTTP头,发现502状态码就执行重启php-fpm的命令。

发表在 操作系统相关 | 标签为 , , , | 留下评论

解决Emoji表情无法保存到数据库的问题

Incorrect string value: ‘\xF0\x9F…’ for column ‘XXX’ at row 1

这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去。

我的解决方案是这样的

1.将已经建好的表也转换成utf8mb4

命令:

更改数据库编码:

(将TABLE_NAME替换成你的表名)

然后就OK了。网上流传的一个版本增加了一个步骤,就是把mysql环境变量将character_set_client,character_set_connection,character_set_database,character_set_results,character_set_server 都修改成utf8mb4,不过我没有做这一步,也正常,所以可能是这一步是多余的,如果需要改,则按照下面介绍做修改。

2.修改mysql配置文件my.cnf(windows为my.ini)

my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = ‘SET NAMES utf8mb4’

修改后重启Mysql

发表在 应用工具软件, 数据库相关技术 | 标签为 | 留下评论

Jetbrains系列软件的破解方法

以前针对Jetbrains系列的软件,例如phpstorm、webstorm都是通过License Server激活。

但是最近大部分的license server都遭到了JetBrains的封杀。

所以在这里备注一下如何通过jar文件+active code破解的步骤

1、安装官方的JetBrains软件,下面以phpstorm为例:

在mac系统安装完phpstorm后在finder中找到application目录,在application目录中找到刚才安装的phpstorm右键,选择显示包内容

依次进入Contents->bin目录,将 http://idea.lanyus.com/jar/JetbrainsCrack-2.6.2.jar 文件下载到当前目录,也可以下载到其它目录中然后拷贝过来

然后编辑当前目录中的 phpstorm.vmoptions 文件,在结尾处新增

例如:

然后启动phpstorm

访问 http://idea.lanyus.com/getkey?userName=byron+sampson 将获取到的内容填写到active code中即可激活。

 

发表在 应用工具软件 | 标签为 , , | 留下评论

macos下编译安装php5.2.17步骤

前段时间遇到一个项目是用php 5.2加zend加密模块来写的项目,但自己机器最低的php版本也是5.3,咋办呢?

在brew上搜索了半天,也在github上找了一圈也没找到,看到brew上的最低版本也是php5.3。

看来只能自己手动编译了~

在网上搜索了一些文章依次按照步骤安装:

1、安装必要扩展

其它的就不描述了

2、下载相应的源码包

3、执行安装脚本

4、修改部分文件

搜索 ext/dom/node.c 文件

修改为

搜索 ext/dom/documenttype.c 文件

修改为

搜索 ext/simplexml/simplexml.c 文件

修改为

5、执行make

注意编译过程中指定mysql,openssl目录,要不然会报错

6、编译安装PHP5扩展模块

注意用brew安装 brew install imagemagick@6 编译 imagick时需要,添加软链

不然安装imagick时会报Cannot locate header file MagickWand.h的错误

7、修改配置文件

命令行执行

在php.ini文件尾添加

8、创建eAccelerator缓存目录

 

发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

Centos系统使用vpnc连接cisco的vpn服务

一. 安装vpnc

1.因为Centos官方源中,所含的软件安装包较少,这里需增加Fedora的源,依次执行:

2.安装vpnc

二. 导入配置文件.pcf

Cisco的vpnclient使用的配置文件是.pcf,而vpnc使用的配置文件是.conf。需要使用一个程序,来做转换

1.下载 pcf2vpnc Perl 脚本文件 (cached)

2.使用脚本转换配置文件 

3.如果没有pcf的配置文件可以自己编辑

保存为default.conf

4.将配置文件拷贝至vpnc的配置文件目录下

三. 运行vpnc

将使用默认的配置文件”default.conf”. 后面会提示输入用户名和密码,然后vpnc连接成功。通过’ifconfig’命令,可以看到多了一个“tun0”的连接。

四. 断开vpnc

发表在 应用工具软件, 操作系统相关 | 标签为 , , | 留下评论

ssh 公钥认证方式登录

一般情况下,我们用ssh远程登录到服务器时,要输入用户名和密码。这对经常维护系统的人来说,很麻烦。怎样才能不用密码直接登录到远程的linux/unix服务器呢?ssh公钥认证可以解决这个问题。

公钥认证,是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。 通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。

在使用公钥认证之前,先检查一下服务器的ssh配置文件/etc/ssh/sshd_config

如果配置没有问题,那么你就可以进行下一步了。
下面我们举个例子,比如有两台机器,客户机A与服务器B,想用ssh公钥认证方式从A机器用client用户登录到B机器的server用户,方法如下:

1.在客户机A上生成公钥与密钥

这样就生成了client用户在这台机器的公钥(/home/client/.ssh/id_rsa.pub )和私钥(/home/client/.ssh/id_rsa).
2.将上一步生成的公钥文件拷贝到服务器B上。然后将文件内容追加到server用户目录的.ssh/authorized_keys中

这样,client用户从客户机上登录到服务器的server用户,就不用再输入密码了。

另外,如果对服务器安全性比较高的情况下,可以设置用户只允许通过公钥认证,禁止用户用密码方式登录,只要修改一下服务器的配置文件/etc/sshd/sshd_config

修改完后要重启sshd服务。
这样用户通过密码方式登录时就会提示:

Permission denied (publickey,gssapi-with-mic)

有效的提高了系统的安全性。
注意:

.ssh 目录的权限必须是0700
.ssh/authorized_keys 文件权限必须是0600

否则公钥认证不会生效。

发表在 操作系统相关 | 标签为 , , | 留下评论

Linux下vsftpd安装以及配置FTP虚拟用户实践

正如vsftpd官方宣传中所说Probably the most secure and fastest FTP server for UNIX-like systems.我相信这是大多数人选择vsftpd来搭建Linux的FTP服务器的原因,当然ProFTPD用的人应该也不在少数。文章将以清晰直观的方式介绍安装vsftpd以及配置FTP虚拟用户的过程,希望对大家有帮助。

首选的FTP服务器搭建方式

安装vsftpd

基于虚拟用户的配置

所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的。虚拟用户不能登录CentOS系统。

修改配置文件

进行认证

设置FTP根目录权限

配置PASV模式(可选)

vsftpd默认没有开启PASV模式,现在FTP只能通过PORT模式连接,要开启PASV默认需要通过下面的配置。

Selinux和防火墙

该关闭的关闭,该放行的放行

使用命令添加ftp用户

添加ftp用户,命令格式:

如使用:#adduser -d /opt/test -g ftp -s /sbin/nologin test

增加了一个名为test的用户,它的目录属于/opt/test下面,属于ftp用户组。此用户是不可以登陆我们终端服务器的。

添加密码:

设置用户名为FTPUSER的用户在目录下可以读写的权限

目录挂载:

如果我们想把/opt/dongge目录挂到我们的ftp目录下面,可以使用mount命令

这样我们就完成了添加用户与挂载目录的配置。

常见问题

如果登录时出现

这样的错误,需要升级pam

登录时出现553 Could not create file

一般都是SELinux的问题,设置SELinux的一个值,重启服务器即可。

登录时出现500 OOPS: bad bool value in config file for: write_enable

注意你的CentOS FTP服务文件中保证每一行最后没有任何空格,一般出错就是在多余的空格上。

虚拟用户上传后默认权限为:600,用户无法下载文件

在配置文件中添加或修改anon_umask项的值。如anon_umask=022或000

发表在 应用工具软件, 操作系统相关 | 标签为 | 留下评论

如何在Mac下升级openssl并安装tengine

升级Mac的openssl

1.终端下 openssl version 查看版本,隐约记得是0.9.8

2.sudo rm -rf /usr/bin/openssl 删除自带的openssl

3.下载最新的openssl,这里我下载的是OpenSSL 1.0.2a.tar.gz

4.解压之,进入openssl-1.0.2a

5. ./config –prefix=/usr/local/openssl 指定安装目录 会报下面的警告

从警告信息看是啥玩意儿64位 32位。。。。。。在5秒内可以按Ctrl-C  abort

嗯哼。abort是啥意思咧,咱小学毕业没学过这个高大上的词啊,百度翻译下呗

哦,原来是堕胎的意思啊 !嗯 懂了 不行,流产不吉利,不能这么搞

等待执行完成,这个警告怎么办呢???

6.在openssl-1.0.2a目录下找到Makefile这个文件,用编辑器打开查找,将darwin-i386-cc替换成darwin64-x86_64-cc,保存

7.sudo make

8.sudo make install

骚等片刻之后,安装完成

9.openssl verison  查看版本

咦,怎么说找不到这个命令呢,前面配置的是安装到/usr/local/openssl下的,不想把它加到path下

10.sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl  执行之后 再来 openssl version 没有意外的话就是

至此,openssl安装完成

下面开始了安装tengine

一、自行编译安装,这种方法适合喜欢装13的大婶

  1. 下载tengine,这里我下载的是最新的2.1.0
  2. 下载tengine依赖包,pcre zlib
  3. 解压它们,copy到同一个文件夹下,当然也有前面的openssl-1.0.2a
  4. 进入tengine,准备开始编译。这里可以修改src/core/nginx.h这个文件自定义服务器名称,我把它改成了niubi

5.  ./configure –prefix=/Users/dongchao/DevelopmentTools/tengine –with-pcre=/Users/dongchao/DevelopmentTools/tengine_install/pcre-8.36 –with-zlib=/Users/dongchao/DevelopmentTools/tengine_install/zlib-1.2.8 –with-openssl=/Users/dongchao/DevelopmentTools/tengine_install/openssl-1.0.2a –with-http_gzip_static_module –with-http_realip_module –with-http_stub_status_module –with-http_concat_module –with-http_footer_filter_module=shared –with-http_limit_req_module=shared  这是我安装的模块,更多请参考tengine文档

6.sudo make

特么的,又要堕胎。又出现安装openssl第5步的警告,打开objs/Makefile文件,在大约1334行,把./config 替换成./Configure darwin64-x86_64-cc

7.sudo make

搞根烟,燃之. ..

抽完烟正好make结束

8.sudo make install

至此,安装完成

9.sudo /xxx/xxx/tengine/sbin/nginx  启动tengine 输入127.0.0.1

看看 Server 是前面自定义的niubi哦

二、通过homebrew安装,这种方式适合新手小白

开源地址:https://github.com/denji/homebrew-tengine

安装步骤:

1、命令行添加homebrew源

2、查看选项及信息

3、执行安装

 

发表在 操作系统相关 | 标签为 , , | 留下评论