在PHP7环境下安装OPENSNS(失败)
问题
mysql_connect 不支持
在php7环境下,你会发现安装opensns时出错,报“mysql_connect”不支持,其原因为,opensns在设计之处,只考虑了php5.3的兼容性,以至于甚至到现在,改程序不支持php5.5(包括)以上的php版本。
解决思路
php5.3之后,逐渐废弃了原生mysql,转而以mysqli和pdo-mysql代替,以至于像zabbix的新版本依赖于mysqli 接口方法。那么对php程序中的相关函数方法进行替换是否可行呢
故本次探索进行了一下两步
步骤一替换 mysql_connect 为mysqli_connect
在linux中我们可以进入opensns目录执行如下命令
find . -name '*.php'|xargs -i sed -i 's#mysql_connect#mysqli_connect#g' {}
其中前半部分find . -name '*.php'是寻找相关的php文件
sed命令则用于替换函数名,由于方法基本结构相同而函数不同,大部分情况下
是可以使用的
结果
安装完成 tp 架构 mysql_escape_string函数相关报错
步骤二替换 mysql_escape_string 为addslashes
重新安装
find . -name '*.php'|xargs -i sed -i 's#mysql_escape_string#addslashes#g' {}
进入主页成功,程序运行失败
步骤三 只替换 检查依赖中的array{}中mysql为mysqli
变为支持
安装失败,同步骤一
注本次版本为opensns3.3.7
总结
旧sns的时代已经悄然过去了,不少像opensns这样的优秀开源成果,可谓是我国开源文化的先驱楷模,联想到最近所谓00CEO抄袭github项目的,不由得引发我们的深思,我们或许需要更多的关注开源项目。然而,最近接触的两个开源项目 opensns 和悟空crm(5kcrm)都是基于php5.3的版本而php的版本早已经策马前驱,经过了5.5、7.0.、7.2等多个版本的更新。这或许是与我天朝的php开发人员学习培训与应用环境有关,但特别想不通opensns基于tp 居然不兼容新版本?这可是和wordpress差了好大一截呢。除了自己努力意外,希望国内的php开发生态能更加的与时俱进吧。