PHP深入实践
文章平均质量分 54
以实战为基本,总结项目开发中的实战经验。
狂野小青年
隐晦的日子总是敌不过我们的阳光的心态!
展开
-
Windows下PHP安装v8js扩展
重启服务,用phpinfo()函数在浏览器输出PHP环境信息,搜索v8js,存在说明已安装配置完成。如果为 enabled,则说明你的PHP版本是线程安全性的,反之亦然。由于国外的网站半天下载不下来,这里我整理分享到百度网盘了。文件放在php/extension(ext)目录下。文件夹名带有nts的为非线程安全性PHP版本。是x64还是x86,以便使用相应的文件。由于网上很难下载到,有人说这里有人编译好的。这五个文件放在PHP的根目录下。在php.ini中,打开扩展。注意:PHP7.0以上才支持。原创 2023-02-21 23:09:58 · 735 阅读 · 0 评论 -
Windows下Apache高并发调优 记一次 child process 35484 exited with status 3221226356 -- Restarting. 问题解决
child process 35484 exited with status 3221226356 -- Restarting 在某些平台上,如果默认的栈空间大于服务器运行所需空间,那么将ThreadStackSize值降低到小于操作系统默认值可以让每个进程中允许生成的最大线程数量增加。这种类型的调整应该仅在测试环境中使用,并且对所有服务器进程进行充分的测试,因为处理某些罕见的请求需要较大的栈空间。在默认栈尺寸较小的平台上(比如HP-UX),Apache可能会在使用一些需要较大栈尺寸的第三方模块时崩溃。原创 2023-02-14 18:22:12 · 578 阅读 · 0 评论 -
微信支付V3接口,踩坑宝典
下载平台证书:php vendor/bin/CertificateDownloader.php -k ${apiv3_key} -m ${商户号} -f ${私钥文件} -s ${商户证书序列号} -o ${下载的平台证书保存目录}原创 2022-11-06 23:20:33 · 790 阅读 · 0 评论 -
最新版安装composer方法
将下载好的 Cooposer.phar 移动至 /usr/local/bin改名为 Composer , 这样就实现了全局调用。原创 2022-09-15 10:44:23 · 464 阅读 · 0 评论 -
PHP替代JavaScript的 js charCodeAt() 方法
返回字符串第一个字符的 Unicode 编码(H 的 Unicode 值):n 输出结果: 在PHP中并没有相同功能的原生方法和js的charCodeAt()方法,因此我们自己来实现一个替代方法:本人亲测实际用于生产环境,完美解决当前问题。...原创 2022-07-03 11:23:41 · 561 阅读 · 0 评论 -
PHP 基础篇 - PHP 中 DES 加解密详解
跨语言做 DES 加密解密经常会出现问题,往往是填充方式不对、编码不一致或者加密解密模式没有对应上造成。作为一个软件开发者,可以通过工具测试 DES 加密解密,这里推荐一个在线工具: http://tool.chacuo.net/cryptdesPHP 提供了 Mcrypt 系列函数来实现 DES 的加解密,但该扩展中的函数陆续被废弃,自 PHP 7.2.0 起,会移到 PECL。所以本代码用了更通用的 OPENSSL 方式实现 DES 的加解密,具体的实现和使用代码如下:类调用三、相关链接原创 2022-07-02 14:36:44 · 2876 阅读 · 0 评论 -
PHP非对称加密算法(RSA)加密机制设计
非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。PHP 为客户端 编写API,对数据加/解密。创建私钥、公钥服务端类库类调用案例......原创 2022-06-24 17:45:45 · 1018 阅读 · 0 评论 -
Nginx反向代理 对响应网页中的字符串进行替换设置
proxy_set_header Accept-Encoding ""; 设置这个得原因是:告诉后端不要进行gzip压缩. 如果是gzip压缩流, 那么我们就没法进行替换了.sub_filter_types *; 对所有请求响应类型都做sub_filter指定的替换.sub_filter_once off;sub_filter会执行多次而不是一次. 效果类似于java中的string.replaceAll而不是replace.sub_filter 'str1' 'str2';原创 2022-05-11 15:17:57 · 4059 阅读 · 0 评论 -
php解析非标准json、非规范json的方式实例
php解析非标准json、非规范json的方式实例前言采集数据的时候经常碰到一些JSON数据的Key值不是字符串,下面就来看看用php如何解析非标准、非规范json话不多说,直接上代码:// 解析非标准json,注意暂时未处理 {str:["aaaa","bbb"]}$json = preg_replace( "/s(?=s)/","\1", $json );// 多个空格只留一个$json = preg_replace( "/([{},]+)s?"?s?(w*?)s?"?s?原创 2022-05-08 10:53:09 · 477 阅读 · 0 评论 -
ThinkPHP框架的.env读取原理
ThinkPHP框架的.env读取原理<?phpclass Env{ static $initialize; /** * 获取环境变量值 * @access public * @param string $name 环境变量名(支持二级 . 号分割) * @param string $default 默认值 * @return mixed */ public static function g.原创 2022-04-25 22:45:54 · 2578 阅读 · 0 评论 -
php中签名公钥、私钥(SHA1withRSA签名)以及AES(AES/ECB/PKCS5Padding)加密解密详解
由于http请求是无状态,所以我们不知道请求方到底是谁。于是就诞生了签名,接收方和请求方协商一种签名方式进行验证,来取得互相信任,进行下一步业务逻辑交流。其中签名用得很多的就是公钥私钥,用私钥签名,公钥验签,或者公钥加密,私钥解密。不管是公钥和私钥,我们首先要进行格式化,当然如果你获取的就是格式化后的可忽略这一步1、公钥私钥的格式化********************私钥格式化********************/function formatPriKey($priKey).原创 2023-02-01 17:36:51 · 915 阅读 · 0 评论 -
前端js图片跨域问题解决方案
前端js图片跨域问题解决方案错误提示如下:解决方案:要在图片存放的根目录放一个.htaccess 并且加上,本方法适用于apache服务器<IfModule mod_headers.c> Header add Access-Control-Allow-Origin: *</IfModule>总结还有方案就是在apache里面设置,具体方法找度娘吧!!!...原创 2021-12-28 09:02:53 · 2645 阅读 · 20 评论 -
Composer 版本约束表达式的使用
相信 Composer 对你来说已经相当熟悉了,不过对于包的版本,我觉得应该还有不少同学不是那么清楚各种写法到底是啥意思。语义化版本首先,我们来了解一个东西:语义化版本版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。语义化版本一般我们使用 3 个部分来表示一个版本,例如:1.4.原创 2021-12-27 14:34:56 · 261 阅读 · 3 评论 -
深入理解PHP7内核之OBJECT
深入理解PHP7内核之OBJECT前面的几篇,我系统的介绍了PHP7以后的ZVAL,Hashtable, 以及Reference, 今天我来讲讲Object(对象)的一些变化。PHP5按照惯例,我先带大家回顾下PHP5时的zend_object(此部分内容之前的文章中也有涉及,如果熟悉可以跳过), 之前如果有兴趣也可以看看我10年前写的深入理解PHP原理之对象.PHP5中,对象的定义如下:typedef struct _zend_object { zend_class_e.原创 2021-12-27 14:12:49 · 289 阅读 · 0 评论 -
Window下PHP安装SG11,SG12扩展 requires a SourceGuardian loader ‘ixed.7.1ts.win‘ to be installed.
Window下PHP安装SG11,SG12扩展 requires a SourceGuardian loader 'ixed.7.1ts.win' to be installed.一、背景由于PHP代码加密了,需要安装加密扩展,才能运行。百度一大堆千篇一律全是宝塔傻瓜式的安装教程,我又没用宝塔环境,各种折腾,CDN下载的扩展版本又低,走了不少弯路。最后发现安装方法很简单,记录下我是如何完美解决的,希望能帮助你少踩坑。二、解决方案第1步:先运行加密代码,会有如下提示第2步:点击 .原创 2021-12-10 21:51:14 · 2088 阅读 · 6 评论 -
Type error: Argument 1 passed to Monolog\Utils::getClass() must be an instance of Monolog\object
Type error: Argument 1 passed to Monolog\Utils::getClass() must be an instance of Monolog\object错误原因:因为PHP版本太高,2.x最低要求PHP7.2 官方原话如下:RequirementsMonolog^2.0works with PHP 7.2 or above, use Monolog^1.25for PHP 5.3+ support.解决办法composer 降低 m...原创 2021-09-14 19:27:35 · 385 阅读 · 0 评论 -
PHP+Selenium爬虫 物理跳过反爬虫机制 PHP爬虫最佳实践方案分享
其实就目前业界来说, python 下的爬虫轮子是最多的,我厂大多数同学都用 python 搞爬虫。我由于原来搞 web 后端用 PHP 比较多,对 PHP 下的生态和第三方库啥的如数家珍,厂里对使用的语言也不做强制要求,所以我就用最拿手的 PHP 开搞了。有同学可能会觉得 PHP 下爬虫轮子似乎不多,甚至有部分做惯了 PHP 后台的同学在需要完成爬虫任务时也拿起了 python ,难道 PHP 就不适合搞爬虫么?我认为恰恰相反, PHP 在 web 领域积累了大量成熟的第三方库,而且其强大的内容处理能力使原创 2021-09-05 18:21:23 · 1337 阅读 · 0 评论 -
PHP CI框架 (CodeIgniter) 中依赖注入和控制反转的实现方案和使用技巧
一、相关概念依赖倒置(DIP)DIP是一种设计思想,在传统的软件设计中,上层代码依赖下层,当下层代码发生改变的时候,上层代码也要发生改变,代码不易维护,而DIP设计思想要求定义定义上层接口,下层实现这个接口,从而降低耦合度,避免对原代码的侵入。控制反转(IOC)IOC是DIP的一种具体思路,将上层所依赖的下层交由第三方实现。也就是说,是在A类中主动去获所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢?就是A类不再主去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后原创 2021-08-10 12:12:16 · 568 阅读 · 0 评论 -
PHP Startup: Unable to load dynamic library 解决办法
Windows上安装PHP的v8js模块报错:PHP Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php71\ext\php_v8js.dll' - 锟揭诧拷锟斤拷指锟斤拷锟斤拷模锟介。后面原创 2021-05-30 19:55:17 · 2575 阅读 · 1 评论 -
Mac安装PHP的v8js扩展 用php执行JavaScript脚本
Mac上安装安装方式有很多种,我这里采用pecl来安装1. 安装v8引擎brew install v8安装成功后在 /usr/local/Cellar/v8/********/ 可以看到,记住这个目录下面会用到注意注意注意注意注意注意注意注意注意注意注意注意 查看 /usr/local/Cellar/v8/********/libexec 下面有没有lib目录 没有的话 执行创建 mkdir -p /usr/local/Cellar/v8/7.4.288.25/libexe原创 2021-05-22 15:53:30 · 1362 阅读 · 14 评论 -
[UnexpectedValueException] Your github oauth token for github.com contains invalid characters
Composer 报错:[UnexpectedValueException] Your github oauth token for github.com contains invalid characters: "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"排查过程:重新设置g...原创 2021-05-19 23:07:27 · 12261 阅读 · 0 评论 -
Docker快速部署PHP开发环实例
本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊。推荐PHP开发者阅读。希望对大家有所帮助。环境部署一直是一个很大的问题,无论是开发环境还是生产环境,但是 Docker 将开发环境和生产环境以轻量级方式打包,提供了一致的环境。极大的提升了开发部署一致性。当然,实际情况并没有这么简单,因为生产环境和开发环境的配置是完全不同的,比如日志等的问题都需要单独配置,但是至少比以前更加简单方便了,这里以 PHP 开发作为.原创 2021-03-08 11:02:30 · 404 阅读 · 3 评论 -
Linux 和 mac os 下php安装mcrypt扩展
Linux 和 mac os 下php安装mcrypt扩展1、下载 libmcrypt, mcrypt源码压缩包(gz或tgz格式)libmcrypt-2.5.8.tar.gz或者去这里libmcrypt下载你需要的版本。例如 libmcrypt-2.5.8.tar.gz, mcrypt-1.0.4.tgz2、先编译libmcrypt,再编译mcrypt1)、编译libmcrypt参考地址:https://www.cnblogs.com/wyaokai/p/119477...原创 2021-03-03 16:23:00 · 1331 阅读 · 8 评论 -
微信昵称在数据库存储处理,解决显示乱码方案
微信昵称在数据库存储处理,解决显示乱码方案一、定义编码解码类<?php/** * Created by PhpStorm. * User: chen * Date: 2020/2/18 * Time: 14:35 */namespace wechat\lib;class Emoji{ //对emoji表情转义 static function encode($str){ $strEncode = ''; $length原创 2021-02-07 18:03:44 · 1507 阅读 · 1 评论 -
9款一键快速搭建PHP运行环境的好工具
一键搭建PHP运行环境工具1.APMServhttp://apmserv.s135.com/国内研发,功能强大,操作简单,无需安装,只需鼠标一点,即可在自己的电脑上傻瓜全自动搭建一个完美的PHP的Web服务器。2.PHPnowhttp://www.phpnow.org/国内研发,集成套件,绿色免费,简易安装、可快速搭建支持虚拟主机的P原创 2014-12-13 23:08:39 · 4924 阅读 · 0 评论 -
php中流行的rpc框架详解
什么是RPC框架?如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call)那什么是远程调用?我的官方群点击此处。通常我们调用一个php中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它是一个本地调用!远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个远程地方。远程调用原理比如 A (clie原创 2020-12-24 16:10:33 · 1746 阅读 · 12 评论 -
执行 composer update 命令的时候报 Your requirements could not be resolved to an installable set of packages.
Your requirements could not be resolved to an installable set of packages.以上原因:不匹配composer.json要求的版本。解决方案:composer可以设置忽略版本匹配,composer install --ignore-platform-reqscomposer update --ignore-platform-reqs再次执行composer命令可以正常安装包了。...原创 2020-12-18 13:20:36 · 3419 阅读 · 1 评论 -
Windows下PHP各版本运行库vc9-vc14下载集合
Windows下PHP各版本运行库vc9-vc14下载集合php5.3、5.4和apache都是用vc9编译,电脑必须安装vc9运行库才能运行。php5.5、5.6是vc11编译,如用php5.5、5.6必须安装vc11运行库。php7.0、7.1是vc14编译,如用php7.0、7.1及以上版本必须安装vc14运行库。Visual C++ Redistributable Package是安装 Visual C++ 库的运行时组件。以上安装VC++系统运行库必须是32位的安装环.原创 2020-10-23 21:54:23 · 2752 阅读 · 0 评论 -
开启XDebug无效原因
1. 造成开启XDebug无效原因路径不正确 在php.ini文件中zend_extension路径不正确,例如:正反斜杠、路径不对问题 php_debug扩展版本不匹配 例如:你安装的是PHP7.2版本,实际下载的php_debug版本是PHP7.1,就会造成开启debug失败 php_debug扩展32位或者64位与安装PHP的不对应 一般的集成环境中,PHP的架构都是32位的(x86),而你的电脑是64位(x64),以PHP的环境架构为准,例如:我的使用的PHP是x32为,电脑是win1原创 2020-10-19 18:34:48 · 2581 阅读 · 0 评论 -
PHP curl模拟表单上传文件 微信公众号素材管理接口crul文件上传核心源码
SQLyog是由Webyog公司研发的一款mysql数据库图像化管理工具,它和Navicat for mysql是属于相同类型的数据库编辑和查看工具,它拥有强大的数据库转储功能和编辑功能,让你的数据库管理变得轻松便捷。本程序已汉化成中文版,破解方法简单,输入注册码即可,博主已亲测。下载地址:https://pan.baidu.com/s/1_O0R-fUvSHFtgc84xZbJxg软件的注册码:...原创 2020-09-18 12:48:22 · 13803 阅读 · 7 评论 -
PHP中使用SCWS中文分词详解
PHP中使用SCWS中文分词SCWS 简介SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)。这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词。词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开,所以如何准确并快速分词一直是中文分词的攻关难点。SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序,支持的中文编码包括 GBK、UTF-8 等。此外还提供了原创 2020-08-12 13:07:01 · 1240 阅读 · 2 评论 -
PHP中用ffmpeg获取视频封面图片详细步骤
PHP中用ffmpeg获取视频封面图片详细步骤一、环境准备官网下载:https://ffmpeg.org/download.htmlwget https://ffmpeg.org/releases/ffmpeg-4.2.3.tar.bz2bzip2 -d ffmpeg-4.2.3.tar.bz2tar -xvf ffmpeg-4.2.3.tarcd ffmpeg-4.2.3安装./configure --prefix=/usr/local/ffmpeg如果错误提示:n原创 2020-06-03 20:00:00 · 2889 阅读 · 0 评论 -
Laravel中的.env文件偶发性读取不到,env()获取为空最后取了config默认的值终极解决方案
Laravel中的.env文件偶发性读取不到,env()获取为空最后取了config默认的值终极解决方案1.背景用Laravel框架开发项目,上线后打开APP运行一段时间后会莫名的自动退出登录(前端有自动轮询请求接口),经过排查发现session的key中途会被重置成服务上另一个项目的session_key,这篇博文有相关.env串库说明:https://blog.csdn.net/u010785091/article/details/88715800。后面我把.env里的键添加加个前缀后,退出的频原创 2020-05-09 17:45:04 · 5404 阅读 · 0 评论 -
php-fpm的几种重启方式
php-fpm的几种重启方式方式1:信号控制php 5.3.3 以后的php-fpm不再支持php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,所以不要再看这种老掉牙的命令了,需要使用信号控制:master进程可以理解以下信号INT, TERM立刻终止QUIT平滑终止USR1重新打开日志...原创 2020-04-28 10:58:50 · 2230 阅读 · 2 评论 -
laravel model 模型详细基本用法
laravel model 模型基本用法一.定义模型1.命令php artisan make:model User如果你想要在生成模型时生成数据库迁移,可以使用--migration 或-m 选项:php artisan make:model User --migration或-m2.Eloquent使用的表名默认规则是模型类名的复数作为与其对应的表名,除非在模型类...原创 2020-04-22 15:54:09 · 11155 阅读 · 0 评论 -
微信扫码 - 关注公众号后网站自动注册并登录的实现
微信扫码 - 关注公众号后网站自动注册并登录的实现需求描述在自己网站上点击微信登录,网站自己弹出一个二维码、扫描二维码后弹出公众号的关注界面、只要一关注公众号网站自动登录、第二次扫描登录的时候网站直接登录。大家可以体验一下 「随便找的一个网站」前期准备一个公众号(必须认证,配置服务器)微信开发文档实现原理公众平台提供了生成带参数二维码的接口。使用该接口可...原创 2020-02-27 13:24:08 · 10519 阅读 · 0 评论 -
IP138 IP地址查询 php实例
复制代码代码如下:$ip="www.jb51.net"; //$ip可以任意改成其他域名或者是ip地址$source=file_get_contents('http://www.ip138.com/ips.asp?ip='.$ip.'&action=2');//正则匹配preg_match_all("/(.*)/isU",$source,$result);p原创 2014-08-28 17:36:42 · 4273 阅读 · 0 评论 -
Linux phpstudy开启停止重启命令和配置文件位置
在终端中使用sudo 或者 使用管理员账号运行 phpstudy start 开启命令列表:phpstudy start | stop | restart开启 | 停止 | 重启phpstudy add | del | list添加虚拟主机 | 删除虚拟主机 | 查看虚拟主机列表注:添加或删除过虚拟主机原创 2017-04-24 18:17:18 · 2743 阅读 · 0 评论 -
PHP在线打包下载
$button="";if(isset($_POST['button'])){ $button=$_POST['button'];}if($button=="下载"){ $zip = new ZipArchive(); $filename = "./myimages.zip"; if ($zip->open($filename, ZI原创 2016-05-16 16:56:50 · 655 阅读 · 0 评论 -
CI单元测试 PHPUnit与CodeIgniter结合进行单元测试以及代码覆盖率
标题CI单元测试 PHPUnit与CodeIgniter结合进行单元测试以及代码覆盖率安装PHPUnit安装PHPUNIT,具体安装方法,在不同的操作系统下也不相同,网上有很多方法,可以参照一下。安装好后,最好将phpunit设置成环境变量。CI框架自带单元测试CI是利用PHPUNIT进行测试的,而框架里面自带的也有写好的测试用例CI单元测试结构介绍在框架根目录下的tests文件...原创 2019-11-13 15:18:59 · 1258 阅读 · 0 评论