All posts by admin

macOS monterey 升级后安装php

macOS monterey已经完全移出了php,不再默认包含;升级后需要自行安装:

可以通过brew install 的方式安装php,但是通过该方法安装的php又无法和默认的apache配合使用,会包签名错误: No code signing authority for module at /opt/homebrew/Cellar/php/8.0.12/lib/httpd/modules/libphp.so specified in LoadModule directive.

当然可以采取对so代码自签名的方式,但实际上这不是最好的办法,因为brew install 安装的php和mac默认自带的apache之间会由于各种依赖库的问题无法跑起来

最好的办法就是停用默认的apache,然后apache和http完完全全都采用brew 来安装brew 会把依赖的各种包自行安装好

  1. sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  2. brew install php
  3. brew install httpd

注意brew 安装后的提示,相应的环境变量PATH都按安装后的提示设置,最好brew services start 对应的服务即可

gitlab 升级步骤

小版本升级,比如12.3.xx 升级到12.4.xx, 但是注意提示,如果升级不了会提示的:

gitlab preinstall: It seems you are upgrading from major version 13 to major version 14.

gitlab preinstall: It is required to upgrade to the latest 13.12.x version first before proceeding.

gitlab preinstall: Please follow the upgrade documentation at https://docs.gitlab.com/ee/update/index.html#upgrade-paths

  1. 下载rpm包,可以从这里下载https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 根据自己的系统选择对应的版本
  2. gitlab-ctl stop unicorn
  3. gitlab-ctl stop sidekiq
  4. gitlab-ctl stop nginx
  5. rpm -Uvh gitlab-ce-10.8.7-ce.0.el7.x86_64.rpm
  6. gitlab-ctl restart
  7. 查看升级后的版本号 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

慎用json_decode的assoc参数

我们在工作中遇到的情况:

  1. vue 3前端界面 + php 后端 API
  2. vue 3采用typescript
  3. API数据采用json格式

出现的问题

当post api时提交的json数据中包含{}这种空JSON对象,比如style:{}, 后端php在处理过程中会变成[]并返回给前端,导致前端后续的功能出现bug,如这时再往style中设置值就不能正常工作了:style[‘foo’] = ‘bar’, 这时设置是不成功

问题的原因

原因1: typescript的强类型,如果是javascript,这点其实并不影响,JS数组可以直接设置值:var style = []; style[“foo”] = “bar”;这个操作是成功的。
原因2: 后端php在处理的过程中都是按数组格式处理:json_decode($data, true),无形中就把{}变成了php的空数组,然后返回给前端时json_encode就变成[]。

解决办法

修改后端json_decode总是按对象格式处理

党建系统交付使用

序号功能模块功能项功能说明
一、智慧党建移动端(小程序)
1智慧党建移动端新闻资讯党务公开栏目-文章
  党员信息党员基本信息展示
  三会一课健全党的组织生活,加强支部建设,严格党员管理,加强党员教育,发挥党支部的战斗堡垒作用。
  学习中心党员在线学习平台,课件支持文档、音频、图文等格式
  党员活动党内活动的发布和报名平台
  人员画像利用数据分析,将党员作为一个维度,描绘组织一张全面画像信息,让决策者更理解组织,及每一位党员。
  在线考试微信端在线限时答题,高度模拟线下考试,不受时间、地点限制;题库练习、多次考试、补考等,为党员提供一站式学习评测模式。
  会议签到公众号上扫码签到或在会议上签到
2电脑端 支持通过电脑登录使用全部功能。
二、智慧党建后台管理系统
2组织管理组织架构可以看到一个组织整体的结构
  职务管理通过职务管理来明确不同职务在组织中的角色和职责以及相应的任职资格
  党费列表不需要
  党员档案 可编辑党员信息,查看积分详情,加强高校党员档案管理
 宣传管理文章列表对文章进行增删查改
  栏目对栏目进行增删查改
 调查问卷 快速发起投票页面
   支持多选单选
   结果自动统计
 三会一课会议管理发布及管理会议的相关信息,让参会人员了解后能更好的参与其中会议可发起签到
 党员考评考评管理党员业务考评
  考评模板考评模板建立
 学习中心学习分类根据不同的目的,对学习进行分类,记录学习时间,提交学习心得。
  学习列表对要学习的内容一目了然
  试卷管理对试卷进行增删查改
 党员活动活动类型活动分为省级、市级、区级活动
  活动管理对活动进行一个系统化的管理
 奖惩制度积分管理修改积分 备注 功能,积分排名,明细,组内可以看,上级可以看下级的
  红黄绿灯根据会议的参与情况识别 如五天未交会议心得,红灯。请假,黄灯
 统计管理会议统计统计所有的会议数据,可随时查阅相关信息
  人员画像通过人员画像,可以更高效率的得到人员数据
  党员大数据可以更精确的看到党员的分布情况,提供党建大数据智能分析,为党组织决策提供数据依据
 菜单管理移动端菜单前端根据需展示必要功能,自定义显示的菜单

Mac 11.0以上版本不能编译PHP的问题

在Mac 11.x版本编译php会提示php.h不存在,phpize也看不出php版本内容:

grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:        
Zend Module Api No:     
Zend Extension Api No: 

这是因为新版本的mac 不在支持php了,后续可能会移除php, 通过php -v 可以看出

但实际上还没有完全移除PHP,可以查看/Library/Developer/CommandLineTools/SDKs目录下你系统版本对应的目录中usr/include/php里面的内容是否还存在,如果还存在说明php devl的头文件还在哪里,只是usr/bin/phpize找不到他们。

通过phpize的输出也不难看出,他是去usr/include/php里面找对应的头文件,那么我们建立软链接到对应的/Library/Developer/CommandLineTools/SDKs下面的php目录即可。但由于/usr/include目录是Read only的,不允许创建软链接,解决办法就是:

1. 把/usr/bin/phpize 和/usr/bin/php-config两个文件复制到/usr/local/bin,并修改如下两处内容,加上local

php-config中extension_dir也重新指定一个目录,并且把/etc/php.ini extension_dir中也同步调整:

2. 建立软连接 ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/usr/include/php /usr/local/include/php

然后使用phpize时指定全路径 /usr/local/bin/phpize

configure时指定我们修改后的php-config:/usr/local/bin/phpize ./configrue –with-php-config=/usr/local/bin/php-config

make, make install 最后把编译的so文件会拷贝到指定的extension_dir目录中


该问题解决后,可通过pear的方式来安装其他pecl 扩展了

1. 下载pear: https://pear.php.net/go-pear.phar
2. 安装: php go-pear.phar,在出现的页面中分别把1,4两步设置为如下图所示,这其实是让pecl命令在bin目录中
3. 然后就可以通过pecl按照扩展了,比如pecl install zip,会下载源码并编译,同上面的phpize & configure & make & make install