某商vps上编译php时报错“undefined reference to `libiconv_open’”的处理

帮朋友的阿里云的服务器装wordpress。该服务器上面已经装了有好几个站点,web环境是wdlinux的所谓一键安装脚本,向来极其厌恶这种所谓的一键脚本,版本老化,目录不合理,乱。但为了兼容现有环境,还是决定在它上面继续。无语的是,这个web配置实在乱透了,nginx作前端,把动态请求反代到后方apache上,这样配置一个web站点,要同时设置两套web。而且还是使用php 5.2.17,这个老掉牙的版本!搞了半天,真心不想搞下去了。于是决定新安装php新版本,以php-fpm运行,简洁优雅地在nginx上跑。

之前自己服务器上路的是php 7.0.9,直接下载这个版本源码,使用之前自己的configure参数,但在make时出错了,错误消息第一行非常长,核心就是iconv有问题

undefined reference to `libiconv_open’

尝试安装iconv-devel等办法都使用了,都不行。

经过google,也有别的朋友遇到同样问题,make时加参数即可,如下:

 make ZEND_EXTRA_LIBS='-liconv'

堪称完美,在所有解决方案里最简便,向该博客作者表示感谢。[……]

继续阅读

一些wordpress插件兼容php7.x后的一些修改

不知算不算手贱,把VPS服务器上的php升级到7.0, 虽然7.x与之前的兼容性是很高的,但移除了一大堆过时用法,而某些老应用仍然在使用。对个人wordpress站点里出现的错误,修正记录如下。全部是插件,wordpress官方程序,是没有问题的。

mysql_escape_string() 函数[……]

继续阅读

php下数据库持久连接,及apache模块下“数据库并发连接数超限”的潜在风险

php下的多个数据库引擎都提供持久连接的特性,实现了“连接池”的作用,让数据库连接“复用”,目的是减少php引擎连接数据库的消耗。这有类似fastCGI协议的设计初衷:让后端进程复用,节省启动关闭CGI进程的性能开锁。

数据库持久连接的实现方式

这需要从php的运行模式说起。典型的php运行模式[……]

继续阅读

CGI原理示例,及CGI,FastCGI,php-cgi,php-fpm等的总结

CGI

CGI全名“通用网关接口”(Common Gateway Interface),是一个技术规范,用来动态生成网页html。理论上可以使用任意语言写,只要支持标准输入输出及环境变量即可(标准输入输出概念参考C语言中stdio库的printf函数)。

举例简述一下实现细节,以类C语言伪代[……]

继续阅读

CentOS 6.x/apache 2.2下php多版本共存探索(模块及fastCGI)/mod_fcgi,mod_proxy_fcgi实现

在apache下整合fastCGI模式运行的php-fpm,似乎网上很少相关材料,就连英文版材料也少。只要是php-fpm,基本上都是与nginx搭配。查了一大批相关资料,写本文总结一下。

apache下有多个fastCGI的支持方案:至少有mod_fcgimod_fastcgigit)、[……]

继续阅读

php函数mult_iconv:转换任意维数组的字符集编码(扩展iconv函数功能)

php的iconv函数只支持对字符串的转换编码,如果是数组,就要自己遍历转换了,因此写如上的函数,对任意维数组进行转换,同时转换下标(索引)及值。

注意:不转对象。

function mult_iconv($in_charset,$out_charset,$data)
{
    if([......]

继续阅读

php+MSSQL的坑:(n)varchar型字段被截断

很自虐的搭配php+MSSQL,太多的坑,就不说text型被截断了。

受限于现有的asp+mssql应用,新增的部分功能使用php开发。对一个表的读写,后台使用asp,读写都很正常。前台一个调用是php写的,但就是遇到一个诡异的问题,要对数据做一个很复杂的解析处理,结果是数据丢失一部分。一层一[……]

继续阅读

折腾:vps上php环境升级为php5.5

php5.5出来很久了,一直没应用,vps上还是5.3,折腾一番尝试一下看5.5效果如何。

查阅了官方的升级说明,从5.3到5.5变化不大,而且vps上主要跑的wordpress,drupal,phpmyadmin等应用,它们的开发理论是是比较规范的,估计问题不大。

原环境,php-fp[……]

继续阅读