FreePBX 13 does not work on php 7.0.1

前几天安装 Magento 2,竟然说要 php 5.5 以上版本。本不追新的我,想到反正要用到 remi repo,那就装个最新的 php 7.0.1。结果 Magento 2 倒是能运行,但 FreePBX 13 的 web UI 出不来了,显示成空白页。我估计是 FreePBX 所用的 php 语法不够规范,简单排查了一下,根本没看出是哪里的毛病。我估计对 php 7.0.1 来说,FreePBX 到处是毛病。虽然此时 asterisk 仍正常运行,但我不能让 web UI 长期瘫痪啊,赶紧找了个时间拆了 php 7.0.1,换上了 php 5.6。这是目前兼容性最好的版本,FreePBX 和 Magento 2 均能运行,证明对 php 环境不能过于追新。

Change FreePBX default MySQL connection

我可能吹毛求疵了:我感觉如果要修改 FreePBX 里默认的 MySQL 的连接位置好麻烦。 我修改成 MySQL socket 方式连接,而且也修改了 socket file 的位置,然后要修改 FreePBX 好多个文件才能让 FreePBX 对接 MySQL。大部分文件属于 FreePBX 配置文件,还好办,象填表格一样填就是。但 /var/www/html/admin/modules/userman/DB_Helper.class.php 根本没为 MySQL socket 连接方式考虑,DSN 只兼容 host 连接,所以要大改 262 行(以FreePBX 2.11.0.39为例)。 要改成多行: 直接修改程序是我最不愿意的。FreePBX 似乎也没提供安全升级的办法,所以 User Management 模块一升级,上述修改就作废,FreePBX web portal 就出错。

Ngnix 502 bad gateway error after a recent php-fpm update

I recently updated php-fpm from 5.4.16 to 5.5.16. After the update, Nginx comes up with 502 bad gateway error. Googling the error pointed me to look into permission of php socket file. In php-fpm 5.4.16, if no value is given to listen.mode, php socket file is assumed to 0666. But in php-fpm 5.5.16, if no… Continue reading Ngnix 502 bad gateway error after a recent php-fpm update

Hands on GeoIP for Nginx on Fedora and CentOS

最近研究了一下如何根据用户的 IP 获得他的地理位置(我只关心 country 级,不关心 city 级),区别性地在 Ngnix 层面做一些限制性访问。这里用到 GeoIP 软件包和 MaxMind 的数据库。 在 Fedora 20 下,Nginx (目前 1.4.7) 依赖于 GeoIP。等于说,装好 Nginx,ngx_http_geoip_module 自然就启用了,只要在两个配置文件略作修改。 1. 在/etc/nginx/nginx.conf 里添加 2. 在 /etc/nginx/fastcgi_params 里添加 还有其他参数可用,请自行查手册。重启 Nginx 就可以使用 GeoIP 的信息了。 在 CentOS 6.5 下,事情要复杂一些。网上说 CentOS 下的 Nginx 同样依赖于 GeoIP,可在我这里事实并非如此。同样是最新的 1.4.7 版,Nginx for CentOS 是不带 ngx_http_geoip_module 编译的。即使我用 yum install GeoIP 安装了 GeoIP 软件包,但… Continue reading Hands on GeoIP for Nginx on Fedora and CentOS

PEAR Mail.php

我想在服务器上用 Gmail SMTP 代替 sendmail 发送邮件,并不想用 Zend_Mail,只想找一个轻量级的解决方案。 一找就找到 Pear Mail。提示说只要用 然后在程序里 我照着做了,可是提示: Warning: include_once(Net/SMTP.php): failed to open stream: No such file or directory in mail/Mail/smtp.php on line 348 PHP Warning: include_once(): Failed opening ‘Net/SMTP.php’ for inclusion (include_path=’.:/usr/lib/php’) in mail/Mail/smtp.php on line 348 PHP Fatal error: Class ‘Net_SMTP’ not found inmail/Mail/smtp.php on line 349 原来还需要安装一个依赖包

Remove php-eaccelerator before updating php 5.3 to 5.4

今天用 yum update 升级基于 CentOS 的服务器碰到一系列的 errors。 我用了 –skip-broken 这个开关,不能解决问题。 因为 errors 太多,我实在没兴致仔细看,曾经想重装 OS 得了。但终究有一条 error 引起我的注意: Error: Package: 1:php-eaccelerator-0.9.6.1-17.el6.remi.x86_64 (@remi) Requires: php-common(x86-64) = 5.3.16 我尝试着卸载了 php-eaccelerator: 然后再升级: 竟然错误没有了。升级成功! 那就再把 php-eaccelerator 装回去吧。 装不上。可能是 remi 的 php 和 epel 的 php-eaccelerator 不兼容吧。

php is_numeric

某些 php 函数的返回值毫无规律可循。比如 返回 true; (前导空格)返回 true;而 (后导空格)返回 false。 php 有灵活的语法,但每遇这种情况,我总是羡慕其他语言的严谨。

Machine convert xls to csv

Linux is an excellent OS. Today something again proved my choice. I was looking for a solution to convert Excel xls to csv format. This conversion is required by a Magento dataflow project. Magento native dataflow comes with an XML Excel parser. For some reasons, it does not convert my xls files. I think it… Continue reading Machine convert xls to csv