php手动安装扩展

最近在服务器上安装了一些测试程序和框架,经常会安装一些PHP的扩展,忘记命令爬文很浪费时间.所以就记录下步骤和说明.
使用phpize对php进行添加扩展。并且phpize编译的扩展库可以随时启用或停用,比较灵活
使用方法:

  1. wget extension.tar.gz下载相应的扩展包并解压,或者使用php自带的扩展。
  2. cd extension/切换到扩展extension的目录中
  3. /php/bin/phpize 运行php安装目录下的phpize文件,这时候会在extension目录下生成相应的configure文件。
  4. ./configure --with-php-config=/php/bin/php-config 运行配置,如果你的服务器上只是装了一个版本的php则不需要添加--with-php-config 。后面的参数只是为了告诉phpize要建立基于哪个版本的扩展。
  5. && make install 编译模块
  6. 编译好模块之后,需要让php启用它。在php.ini文件中加入把extension.so开启即可。重启php服务。

例如,我安装一个tidy扩展.我这里用了宝塔面板,手动安装扩展

yum install libtidy libtidy-devel -y

cd /www/server/php/73/src/ext/tidy

/www/server/php/73/bin/phpize

./configure --with-php-config=/www/server/php/73/bin/php-config

make && make install

echo "extension = tidy.so" >> /www/server/php/73/etc/php.ini

service php-fpm-73 restart

后记:
其实phpize是一个运行脚本,主要作用是检测php的环境还有就是在特定的目录生成相应的configure文件,这样makeinstall之后,生成的.so文件才会自动加载到php扩展目录下面。

宝塔php7.3 pdo_sqlsrv连接MSSQL

享目的环境是这样:
thinkphp5.1框架连接MSSQL数据库,在之前就已经安装好了ODBC驱动,所以在thinkphp配置文件里一直使用pdo_odbc方式来连接数据库,一切正常.在database.php里的配置:

'type' => 'sqlsrv',
'dsn'  => 'odbc:Driver={ODBC Driver 17 for SQL Server};Server=127.0.0.1,1433;Database=Account',

这里DSN可以看出用的ODBC驱动连接数据库.

今天写代码的时候出现个问题..在数据库插入的时候用了insertGetId来获取插入的自增主键ID.出现错误提示:

SQLSTATE[IM001]: Driver does not support this function: driver does not support lastInsertId()

这里主要是因为odbc方式不支持getLastInsID()来获取自增主键.


- 阅读剩余部分 -

群晖web 架设Thinkphp5开启伪静态

一直是在本机开发微信商城,有时候人不在公司,同事又需要访问系统的时候会比较麻烦。因此决定把程序放到NAS上运行,由于群晖上的web环境不是自己装的LNMP环境(本机及云主机都是用的nginx作后端服务),所以修改配置文件也相对麻烦一些。先用root账户SSH后,需要修改的虚拟机配置文件地址是:/var/tmp/nginx/app.d/server.webstation-vhost.conf (/etc/nginx/app.d)
如果修改这里的conf文件,每次重启服务器会恢复,因此不能修改这里的地方。打开server.webstation-vhost.conf
看到这里对应的域名会加载自己的配置文件,如下:

include /usr/local/etc/nginx/conf.d/3391bf64-c8d6-44cd-87ec-eb039c8f4daf/user.conf*;

因此在3391bf64-c8d6-44cd-87ec-eb039c8f4daf下新建一个我们需要的配置文件如:user.conf.tp5 内容如下:

location / { // …..省略部分代码
   if (!-e $request_filename) {
   rewrite  ^(.*)$  /index.php?s=/$1  last;
   break;
    }
 }

保存后,执行命令nginx -s reload重新加载配置文件。

然后到群晖的web station开启对应的扩展:GD、curl、iconv。搞定

群晖+docker+gitlab+外网

最近给公司做的新项目比较保密,所以项目就不打算放在coding上了。正好给公司新配了DS916,正好搭建gitlab作为以后的私有项目存放。
其实对于docker还比较陌生,也可以趁此机会熟悉一下。gitlab前段时间曝漏洞貌似比较严重啊,不过这里也就是内网和家里访问下问题也不大,随时更新就OK了。
对于外网穿透可以参照:用ngrok打开任督二脉(内网穿透)



- 阅读剩余部分 -

Typecho主题开发那些事

最近公司忙于微信公众号开发,因此对于Xone主题的更新也就延后了,确实忙的没时间加新功能。只能抽空周末的时候做了下。
有朋友发消息说要求主题最好带边栏目录,或者双栏页面。其实打算做这个主题的时候就没打算做成双栏或者多栏,我觉得单页更能突出博客的内容。但是少了边栏分类确实也不太方便,不能破坏页面的整体布局。所以不得已我决定用动态panel的形式来容纳常用的边栏及其他功能。

一直想做一个前端简洁的音乐播放器插件,所以就做了全站PJAX无刷新加载,这也就涉及到了评论问题。百度了一下不少人也遇到过同样的问题,解决办法要么是改程序源码,要么就是插件弄。本人也是本着不修改Typecho自身半点源码的前提来制作主题的。官方文档也说的很简单,深入一点的内容根本就没提到。没办法花了周末一整天时间来研究Typecho的源码。

Typecho生成页面时表单带是有Token验证的,后台开启或关闭防垃圾评论会有不同的验证方式。var/Widget/Archive.php类中的header方法就是用来输出头部信息的,在模板文件header.php会调用这个函数 <?php $this->header(); ?>,在Archive.php的1772行如下:


- 阅读剩余部分 -