
PHP
molaifeng
道阻且长,行则将至;行而不辍,未来可期。
展开
-
解决 mac 上 dyld[14806]: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicuio.74.dylib
发现 php 不能用了,仔细一看,是 php 依赖的多语言库 icu4c 版本不匹配。回想了一下,应该是昨儿个下载一个软件时,使用 brew update 时把本地的 icu4c 版本由 74 升级到了 76,但是 php 7.4 依赖的是 icu4c 74 版本,导致 php 无法运行。原创 2024-11-27 09:29:06 · 818 阅读 · 0 评论 -
解决 php 中 composer 包 namespace 同名问题
利用 psr4 解决 PHP 中 composer 包同名的问题原创 2022-10-31 23:29:36 · 370 阅读 · 0 评论 -
读取csv并导出新的csv
用 editplus 打开 csv 格式的文件,会发现编码为 ANSI。在 ANSI 里,GBK 是专门来解决中文编码的,是双字节的,不论中英文都是双字节。通常程序保存文件的编码常为 UTF-8,因此读取 csv 文件时,需要进行编码转换,把 GBK 的转为 UTF-8,导出的时候再把 UTF-8 转换为 GBK。csv 格式的文件标题,日期测试1,2020-10-29处理代码<?phpfunction utf8ToAnsi($str){ return iconv('UTF-原创 2020-10-29 16:19:14 · 592 阅读 · 0 评论 -
php数组使用json_encode转换的一个小坑
前段时间客服系统出现了个小问题,不能切换中继线路。之前是中继线路是固定的,也就是账号配置的时候指定的,后来为了方便,在界面上以下拉框的形式让客服选择。问了下相关人员,说是添加了一个新的中继号后就歇菜了,于是在测试环境下复现了,发现是数组转换的问题。中继号都存在数据库,php 取出来,然后用 json_encode 转换为 js 的数组,最后在页面上组装成 select 相关内容展示出来供客服操作。<?php$array = [ '8001', '8002', '800原创 2020-09-30 18:01:52 · 1533 阅读 · 1 评论 -
解决跨域上传文件时报错
下午群里@我说,上传文件有问题,看了下,发现报如下错误has been blocked by CORS policy: The "Access-Control-Allow-origin' header contains multiple values''*,* but only one is allowed.字面意思是设置了重复跨域了。于是开始着手解决问题:这个上次附件是页面上 js 直接调...原创 2020-03-05 18:49:37 · 1680 阅读 · 0 评论 -
php干货
以前博文叫“php面试中常见到的算法”,后发现每次要面试时,老是要在网上找资料,还不如自己整理下自认为重要的干货放在里面。本想叫面试宝典的,但是市面上相同的太多了,还是叫做干货得了。原创 2015-03-31 22:37:07 · 2332 阅读 · 0 评论 -
关于json_encode中文为null的情况
记得以前在网上遇到过别人的求助帖,说是json_encode后发现json字段有null的情况,那时自己也没遇到过,就用一个笨的方法解决。原创 2013-12-12 10:54:01 · 4349 阅读 · 2 评论 -
使用redis存储session
准备工作参考以前的博客安装redis、安装phpredis。 具体代码ini_set('session.save_handler', 'redis');ini_set('session.save_path', 'tcp://127.0.0.1:6379');session_start();$_SESSION['sessionid'] = 'this is ses...原创 2015-07-29 17:38:32 · 4073 阅读 · 0 评论 -
curl学习笔记
今天工作较清闲,便看了下curl相关资料,晚上时便整理了下,主要是代码为准原创 2013-10-21 23:56:11 · 993 阅读 · 0 评论 -
PHP实用方法
本博客不定期更新,记录工作中常用的方法原创 2016-03-24 21:05:46 · 517 阅读 · 0 评论 -
记一次附件上传bug
昨天测试在群里反应,在beta环境上传附件失败。要到账号,复现了下,发现提示token过期。这里说下beta服务器的架构,两台服务器A和B,HA做负载,项目代码各一份,使用Jenkins部署、Redis、Mysql都在B服务器上,在A服务器Nginx配置上传的链接都打到B服务器上,也就是上传都是在B服务器上,而无需两台服务器都同步。同时为了于线上环境一样,B服务器上的Redis是以sentinel方原创 2016-09-28 15:15:11 · 541 阅读 · 0 评论 -
毫秒级的Curl
今天要实现一功能,只需传个值给接口,而无需关注其返回状态,于是便有了下面的代码原创 2016-03-10 20:18:11 · 960 阅读 · 0 评论 -
对file_get_contents进行异常捕获
项目中,需要用到调用其他组的接口,目前这边就封装了个函数来实现原创 2016-03-18 13:57:00 · 6491 阅读 · 0 评论 -
set_include_path简叙
在看框架源码中,相信不少都见过此函数吧。对于新手来说,不明其意,今天就简单说下此函数。原创 2015-12-23 15:21:33 · 495 阅读 · 0 评论 -
浅谈 PHP
这篇博客分三个部分陈述,分别是PHP进程管理器、PHP启动流程和PHP优化。 谈到PHP进程管理器,不得不讲下它的进化过程,CGI--->FastCGI--->PHP-FPM。 CGI全称是“公共网关接口”(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准。...原创 2015-11-15 15:35:37 · 1095 阅读 · 1 评论 -
socket初试
用php好几年了,工作中一直没用到socket这块,今天心血来潮,顺着手册及网上资料试了试。原创 2015-11-13 17:54:35 · 592 阅读 · 0 评论 -
封装获取上月、本月、近15天、近30天方法
封装获取上月、本月、近15天、近30天方法原创 2015-11-09 17:56:40 · 532 阅读 · 0 评论 -
XHProf简明教程
XHProf是Facebook开源的php性能分析工具,是php的一个扩展。windows平台可以通过此链接下载,同时还需下载制图工具Graphviz,最后去github下载相关的代码(只需xhprof_html、xhprof_lib、examples)。原创 2015-09-17 10:12:39 · 830 阅读 · 0 评论 -
使用魔术方法实现跨文件调用
目前项目用yii框架,controller调用facade的方法,facade调用adapter的方法,adapter调用api的方法,api封装了sql方法,但是大部分情况下,只是单纯的调用,但限于目前项目的规则,都要写方法,而方法都是单纯的return,于是写了个demo,模拟了下原创 2015-10-18 10:32:47 · 551 阅读 · 0 评论 -
浅谈Base64编码
简单聊聊Base64实现原创 2016-11-01 21:24:51 · 451 阅读 · 0 评论 -
PHP通过双向管道与C通信
上个月的一篇博客进程与系统调用、进程间通信–Head First C读书笔记介绍了C语言的进程通信,今天介绍下PHP通过双向管道与C通信。原创 2016-11-18 15:00:30 · 2215 阅读 · 2 评论 -
yum 安装 php7
安装 epel 和 remi 源wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -ivh epel-release-latest-7.noarch.rpmwget http://rpms.remirepo.net/enterprise/remi-release-7.rpmrpm ...原创 2019-06-27 18:07:50 · 1729 阅读 · 0 评论 -
PHP 数组合并 array_merge 和加的区别
日常开发中,合并两个数组经常用 array_merge,偶尔用 +,但这两者有什么区别呢,下面结合两个例子分析。$arrA = ['hobby' =&amp;gt; 'coding', 'age' =&amp;gt; 17];$arrB = ['hobby' =&amp;gt; 'dancing', 'age' =&amp;gt; 27];print_r(array_merge($arrA, $arrB));/*A...原创 2019-03-18 14:53:53 · 677 阅读 · 0 评论 -
crypt 在 php 与 java 中互通
JAVA 新项目中登录模块用到之前 PHP 项目的用户表,由于密码是 crypt 加密存储的,于是整理了下二者的登录密码验证过程// 数据库操作$user = getUserInfo();if (crypt($_POST['password'], $user['password']) != $user['password']) { ajaxReturn(['status' =>...原创 2019-02-25 13:35:34 · 734 阅读 · 0 评论 -
Swoole 上传文件
目前呼叫中心项目中有转码、CDR、拨号计划、SIP 分机等模块交给 PHP 大家族中风格清奇的 Swoole 来实现,为了图方便,具体用的是 EasySwoole 框架。这次在开发 IVR 模块中要用到 WEB 服务器上传录制好的音频文件到跑在EasySwoole语音服务器上,于是用到了之前博客中的 Curl 上传文件,不过这次接收上传对象由 EasySwoole 来执行。和常用的接收文件 $_...原创 2018-11-21 14:26:42 · 3094 阅读 · 0 评论 -
Laravel UNION 分页查询(5.0 版本)
单个 UNION 查询时,很简单,只需两个条件联合起来 $query = DB::connection()->table('user')->limit(100); $query = $query->union(DB::connection()->table('user')->limit(100));但是如果是循环中呢,一不小心就会写成 UNION 相互嵌套的情...原创 2018-10-30 15:01:13 · 1749 阅读 · 0 评论 -
Nginx error_log 中 upstream timed out (110: Connection timed out) 处理
今天发现测试环境的一台服务器上的 web 应用打开特别慢,于是进到服务器查看 error_log,发现里面有大量的 110: Connection timed out 日志。一开始以为是 proxy_read_timeout 设置时间较短,可调整为 600 之后还是一样。紧接着又查看了下 php-fpm 进程数,嚯,51 个,按照每个进程 40M 的用量,这得用掉 2G 多的内存,而这台服务器的内...原创 2018-08-16 16:37:32 · 6689 阅读 · 0 评论 -
解决getImageData跨域问题
在项目开发过程中要用到html5增加的getImageData方法来实现刮刮卡的效果,后台上传图片,手机端用手刮。在本地开发没遇到问题,上线之后发现刮不了,提示"Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tai...原创 2014-12-31 12:41:19 · 36918 阅读 · 3 评论 -
解决 php 项目中 session 失效的方法
今天下班坐班车,快到站的时候,上家公司的 leader 发了个 qq 给我,意思是救火,下车后回来在电脑上详细问了下,leader 的描述如下这个地址 你帮我看下 为啥上传完试卷发布任务 设置答题卡的时候 session 就没了因为这个项目一开始后台都是我一人开发的,因此很快就找到了问题所在。流程为:用户通过 js 组件上传试卷,在上传试卷的方法中通过 session 存储...原创 2015-01-15 22:49:32 · 31752 阅读 · 3 评论 -
利用PHPExcel导出数据到excel
项目中有个情景是,导出学生的成绩列表为excel格式的,在网上查了下,发现用PHPExcel的很多,于是下了个,看了下文档,调了出了来。 这里记录下,用的是thinkphp的,先把PHPExcel库下下来,放到项目里/Lib/ORG/目录下,我的是/Lib/ORG/PHPExcel 下面的图web页面上展示的 看了图之后,应该就知道到excel怎么展示了吧,下面是...原创 2013-10-09 22:59:14 · 32639 阅读 · 3 评论 -
php邮件发送
目前的工作之一就是负责维护自动发邮件的脚本,这里便把代码抽出来,做个demo,供需要的朋友参考原创 2015-07-16 12:01:45 · 730 阅读 · 0 评论 -
PHP在Windows、Linux环境连接SQL Server
最近要接入考勤系统,厂商用的是SQL Server,这里演示下在Windows和Linux上的安装方法原创 2016-07-01 18:02:14 · 1148 阅读 · 0 评论 -
捕获fatal error形成报警机制
昨天客服发邮件来问,页面出现了大堆的英文,出了啥事了。打开邮件一看,原来是服务器报警没关,把错误显示在页面了,再仔细看,是项目连接一个数据库,而那个数据库所在MySQL服务器连接打满了,以致抛出了个fatal error。解决办法,分两步:设置php.ini中的display_error = off,禁止页面显示错误在项目中捕获fatal error级别的错误,发送邮件、短信,形成报警机制$e原创 2017-03-02 11:09:27 · 514 阅读 · 0 评论 -
小记parse_str
在官网这么是这么说明此函数的,将字符串解析成多个变量,常用于解析前端传过来的字符串解析为数组原创 2016-12-23 16:20:14 · 406 阅读 · 0 评论 -
记录array_multisort的理解过程
昨天,因为项目的一个二维数组排序给纠结了,今天得好好把array_multisort这个数组函数给讲解下,或是给自己记录下,以免下次又忘记了,好记性不如烂笔头嘛。bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $...原创 2013-12-11 14:55:50 · 1069 阅读 · 0 评论 -
使用preg_split和explode分割textarea存放的内容
今天有个紧急的bug,说是后台在配置了白名单后,在手机端app无效,仍然显示内容。收到邮件后,便走了遍流程,发现后台配置白名单是在textarea里配置的,一行一个,再在代码里看,使用的是explode函数分割,其中分隔符使用的是\r\n原创 2015-07-15 17:18:45 · 1328 阅读 · 0 评论 -
利用php数组函数做关联表的编辑
需求为,在创建学校时,需要添加应用,于是创建了个学校应用关联表,编辑学校并提交时,后台需要判断更新的应用是否为一开始提交的,或是有新的应用提交,有旧的应用删除,简化为数组概括如下 $arr1 = array(1, 2, 4, 5, 6, 9); // 学校应用关联表中一开始的数据$arr2 = array(3, 4, 5, 7, 8); // 前台更新的数据/*两原创 2014-03-19 19:09:30 · 863 阅读 · 0 评论 -
使用php处理cas认证
最近项目要嵌入到平台上做一个应用,数据对接用ms-security(见上篇博客),登录则使用cas认证,今天就把完整代码放进来,也是走了好些个弯路的。代码的主要逻辑就是,当用户访问应用时,应用监测是否已登录,未登录则带上本地url跳转到cas登录中心,用户输入用户名、密码后,正确的话便带上ticket跳转到一开始带上的url(通常是该应用的登录接口),检测到ticket后便使用file原创 2014-03-06 15:18:44 · 8395 阅读 · 0 评论 -
php使用WS-Security调用java接口
因为项目要做为第三方应用接入其他平台,需要调用对方的java获取数据,于是对方给出web service接口文档,我方调用。对方考虑到安全因素,需要WS的客户端在调用服务的时候,请求头需要包含一个验证信息,否则服务将不可访问。以前都是使用nusoap调用接口,但是发现不能封装请求头,于是转而采取php自带的soap接口,当然了,前提是要开启该扩展。由于以前没有这方面调用的经验,碰到一堆原创 2014-02-24 11:11:07 · 3091 阅读 · 0 评论 -
在页面进行数据库备份和还原
后台模块有处需求是,用户可以在界面进行数据库的备份和恢复,由于以前在windows上实现过,因此这次把代码跑到linux上,遇到了一些坑,这里便记录下。第一个坑,常用的登录mysql都是mysql -uroot -ppasswd即可进入,但是在linux上,如果把mysql.sock的路径改了,那么在命令行模式下是进不去的,需要加上个-S参数,后面跟着mysql.sock的路径原创 2014-03-31 11:06:11 · 1869 阅读 · 0 评论