PHP全栈日记
文章平均质量分 65
记录日常用实战中的各种问题。
黑夜开发者
CSDN领军人物,数年电商行业从业经验,历任核心研发工程师,网站技术负责人,大数据中心负责人。对系统架构,数据分析处理等大规模应用场景有丰富经验。被CSDN、阿里云社区授予博客专家称号。
展开
-
已解决:PHP用echo输出中文到文件日志乱码的问题
我的情况是想将一个输出结果重定向到一个文件,php test.php > test.log 然后看test.log的情况,然后发现中文乱码。在phpstorm中进行操作。两种方式都可以试一下。原创 2023-11-08 11:21:28 · 553 阅读 · 2 评论 -
PHP获取两个日期之间的所有日期
该函数接受开始日期和结束日期作为参数,并返回这两个日期之间的所有日期数组。函数将返回一个包含从开始日期到结束日期的所有日期的数组。循环遍历结果数组,并逐行输出每个日期。上述代码定义了一个名为。使用示例中的开始日期为。原创 2023-08-23 18:35:02 · 1118 阅读 · 4 评论 -
已解决 writes “allow-plugins“ to composer.json
在Composer中,allow-plugins是一个配置选项,用于指定是否允许使用插件。插件是Composer的扩展功能,允许开发者在安装和更新过程中执行额外的操作,例如生成文档、运行脚本、修改依赖关系等。通过使用插件,开发者可以根据自己的需求来定制和扩展Composer的功能。原创 2023-07-06 19:59:27 · 1211 阅读 · 0 评论 -
PHP语言的前景怎么样,为什么我建议你学PHP语言
世界上没有完美的语言,只有适合的语言,每个语言有自己的应用场景,适合的项目类别和解决方案,通过10多年的开发历程,我相信在今天,我能够说出我心目中我认为最好,也是我自己最喜欢的语言。就是PHP。原创 2023-06-20 18:35:50 · 765 阅读 · 0 评论 -
一篇文章docker-compose安装使用全解
Docker Compose是一个用于定义和运行多个Docker容器的工具,他是一款强大的容器编排工具,能够简化容器化应用程序的部署和管理,提高开发效率和部署速度].原创 2023-06-17 16:53:48 · 1919 阅读 · 0 评论 -
PHP最主流的10个框架,其发展历史及主要特点
PHP快速入门与实战在这篇博客中,我们将介绍PHP十大主流框架,同时在本专栏的后续内容里面,会对这些框架的设计思想及底层源码进行深度的分析,欢迎大家先点个关注。原创 2023-06-07 23:26:22 · 10225 阅读 · 0 评论 -
用PHP实现经典的5种排序算法
排序算法是一种将一组无序的数据元素按照某个规则(大小、字母序等)排列成有序的序列的算法。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。1.冒泡排序:比较相邻元素的大小,如果前面比后面大,则交换两个元素。通过多轮扫描,最大的元素被交换到了最后一位。2.选择排序:每次选取当前未排序部分中最小的元素,放到已排序部分的末尾。3.插入排序:将未排序部分逐个插入到已排序部分中的正确位置,使得已排序部分一直有序。原创 2023-04-21 23:37:21 · 1764 阅读 · 0 评论 -
花20分钟时间,用PHP编程实现公众号自动消息回复
公众号开发已经是一个非常普遍的开发场景,只要有一定编程基础,可以很容易开发出各种应用场景,比如微信支付,微信浏览器分享,微信公众号消息自动回复等功能,今天以PHP代码为例,完整实现一个公众号消息回复功能。完整代码在文章末尾。原创 2023-04-14 14:59:01 · 2348 阅读 · 1 评论 -
解决504 GATEWAY TIMEOUT Nginx网关超时
最近遇到一个问题504 GATEWAY TIMEOUT的问题,在浏览器的NetWork里面看是这个效果。时间大概是60s。原创 2023-02-16 23:46:27 · 2701 阅读 · 0 评论 -
【运维】解决composer update出现的Discard changes [y,n,v,d,s,?]的问题
在PHP项目中,composer是一个使用非常普遍的包管理工具,在本地开发的时候出现了这个问题一搬来说问题不大,可以人为进行输入交互,但是如果是自动化发布中出现,就会等待输入导致卡住,是一个需要解决的问题。原创 2023-01-30 18:12:34 · 698 阅读 · 0 评论 -
解决SSL routines:ssl3_get_server_certificate:certificate verify failed
产生原因php中openssl的ssl证书过期了解决方案先通过命令 php -r "print_r(openssl_get_cert_locations());" 输出目前所用的证书文件。从输出结果中定位到文件位置,即default_cert_file的指向。然后替换掉这个证书。cd ~ && wget http://curl.haxx.se/ca/cacert.pem然后用cacert.pem的内容替换default_cert_file所指向的文件内容。继续编辑php.ini原创 2022-01-18 15:31:18 · 6492 阅读 · 0 评论 -
Linux环境下安装pecl工具,PHP扩展便捷安装
如果你想要便捷快速的安装PHP扩展,不再走传统的下载资源包然后配置编译,那么pecl一定是一款非常方便的工具,他能够自动检测当前的PHP环境,选择适合版本的扩展并根据配置文件自动编译对应的扩展包。快来通过下面的方式试试吧!原创 2020-06-04 19:00:29 · 1725 阅读 · 0 评论 -
docker环境中安装gd扩展
方案1一般情况下可能会想到安装命令docker-php-ext-install gd但是很有可能出现错误configure: error: png.h not found.因为可能本身没有安装png等处理库方案2#更新安装依赖资源库apt update#安装基础库apt install -y libwebp-dev libjpeg-dev libpng-dev libfreet...原创 2020-03-08 16:17:24 · 832 阅读 · 0 评论 -
使用xdebug调试基于swoole的项目,例如easyswoole
说明1: swoole的官方编程须知中已经说到了,swoole与常规版本的xdebug不兼容,主要是由于大量全局变量的使用违背了协程的规范,可以见此网址的说明:https://wiki.swoole.com/wiki/page/851.html说明2: 另外如果想断点调试基于swoole的项目,专门衍生出了一个sdebug,供调试swoole项目。安装流程参见:https://github.c...原创 2020-02-27 12:58:09 · 4358 阅读 · 0 评论 -
约瑟夫问题经典算法,环形链表的运用
问题背景:据说再很久很久以前,约瑟夫及其部下被逼退到了一个山洞里面,走头无路,大家又不甘投降叛变,于是大家决定一起赴死,他们一起围成了一个圈,然后准备依次报数,当谁的数字为3的时候就自杀,后面的人从1开始依次报数,遇到3又自杀,如此循环往复,问最后一个自杀的人是谁?例如如下序列:算法分析#include <stdio.h>#include <stdlib.h>...原创 2019-11-30 11:27:44 · 351 阅读 · 1 评论 -
推荐一个高效率的将Word转化为Pdf的通用接口,开发者免费可用
Word转换为Pdf很多软件都有页数限制,而且在很多页数的前提下面,转化效率比较低。同时对于很多商用的项目来说,可能每天需要大量的进行Word到Pdf的转化,今天就给大家提供一个高速接口,只需要将Word文件通过HTTP上传,就可以快速转化Pdf,下载即可。接口对接文档如下产品名称:Word2Pdf接口地址:http://114.67.92.73/api/word/doc2Pdf请...原创 2019-10-13 22:56:04 · 2336 阅读 · 3 评论 -
PHP压缩裁剪图片实例
/** * @param $srcImage 原图片路径 * @param $toFile 裁剪后图片路径 * @param int $maxWidth 裁剪最大的宽度 * @param int $maxHeight 裁剪后最大的高度 * @param int $imgQuality 图片的质量 * @return bool|s原创 2018-01-16 22:44:26 · 379 阅读 · 0 评论 -
PHP报错Call to undefined function utf8_decode()的解决方案
出现这个这个情况,一般是缺少了php-xml扩展首先查看PHP版本php -v例如上面的版本是7.0,然后执行sudo apt-get install php7.0-xml 安装对应的扩展。然后重启服务。备注,如果出现了E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missin...原创 2019-04-02 13:46:41 · 1826 阅读 · 0 评论 -
ThinkPHP5的数据校验的使用
一般来说,当使用PHP开发后端API的时候,需要校验用户前端输入参数的合法性,并且这是一步非常重要的操作,例如必填,数字,特殊字符等,ThinkPHP5本身提供了对数据校验比较好的支持,使用方法如下。use \think\Validate; //使用提供的内置校验类class Api { function login() { $input = reques...原创 2019-04-12 21:59:19 · 1533 阅读 · 0 评论 -
ThinkPHP5自动生成分组
找到项目路径下面的build.php文件,然后按照里面的分类复制一份,并命名好新的分组名。来到public/index.php文件下面添加下面两行。$build = include '../build.php';\think\Build::run($build);在运行一下项目,保证再次访问过index.php这个单一入口,可以看到application目录下面多了一个admi...原创 2019-04-12 22:07:50 · 431 阅读 · 0 评论 -
PHP当中echo、print、 print_r、var_dump、var_export的异同
echo()可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。print()实际上不是一个函数(它是一个语言结构)所以不能被可变函数调用,因此你可以不必使用圆括号来括起它的参数列表。 当其执行失败时返回false,成功则返回true,速度比echo稍慢。只能打印出简单类型变量的值,如:i...原创 2019-05-05 22:11:09 · 372 阅读 · 0 评论 -
PHP如何快速读取大文件
在PHP中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file、file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能。但当所操作的文件是一个比较大的文件时,这些函数可能就显的力不从心, 下面将从一个需求入手来说明对于读取大文件时,常用的操作方法。需求需求有一个800M的日志文件,大约有500多万行, 用PHP返回最后几行的内容。实...转载 2019-05-14 19:07:55 · 578 阅读 · 0 评论 -
phpStorm中使用xdebug工具调试docker容器中的程序
最近使用了docker容器来构建项目,这种方式虽然极大的加快了构建的项目速度,但是也会对之前的本地开发带来一些挑战,比如今天讲到的调试程序,大家对于xdebug一定不会陌生,但是如果php-fpm放到了容器里面,又该如何进行远程debug呢,今天就来解决这个问题。前提准备如果想要使用xdebug,您需要以下条件为现有的php环境安装好xdebug扩展,安装成功之后可以通过页面输出php...原创 2019-05-31 15:23:16 · 5017 阅读 · 0 评论 -
软件开发常见的一些设计模式,留着供自己研究和面试使用
说到软件开发,就不得不提到设计模式,比如大家基本上都用过什么MVC框架开发各种系统,一些好的设计模式不仅能让软件运行的更为流畅,更能让开发人员的工作效率大大提高。本文就来列举一些常用的设计模式,供大家参考收藏。工厂模式这个模式学过Java编程的一定不陌生,都听说过SessionFactory。工厂模式是一个程序设计中比较常用的模式,一般来说一个对象都是通过new方法去获取自身的一个实例...原创 2019-08-15 22:56:10 · 340 阅读 · 0 评论 -
解决PHP环境下导出数据Nginx出现An error occurred的问题
一般情况下的错误,都是fpm或者程序本身暴露出来,一般Nginx出现这样的情况,说明Nginx的请求没有得到正常的反馈,很有可能是请求超时,或者内存不够而溢出。可以通过如下方式尝试解决,在请求的PHP方法开头加入以下代码。代码如下: @set_time_limit(0); //设置时间不超时 @ini_set('memory_limit', '1024M'); //设置方法允许占用...原创 2019-04-01 15:09:11 · 2301 阅读 · 0 评论 -
Docker容器与宿主机器通过IP内外通讯
例如一个如下场景,在Docker环境下面运行了一个含有PHP环境的Docker容器(container),容器名称为php1,同时在宿主机(真实机器)上面有一个MySQL服务器,如何来通过,容器内部的PHP程序来访问外部的MySQL呢?原理:当docker服务启动起来时,宿主机器便作为网关的存在与其他Docker容器处在同一个网段内,就像是路由器和各个连接终端之间的关系,宿主机就类似于路由...原创 2019-03-23 11:40:08 · 10353 阅读 · 4 评论 -
PHP将SESSION存储到Redis中
大家都知道使用session的时候都是通过操作$_SESSION变量来实现session的存取,如果要将session存储到Redis中,就需要知道$_SESSION是怎么运作的。在PHP配置文件php.ini中规定了session的存储方式和路径。其中session.save_handler 定义存储和获取与会话关联的数据的处理器的名字。默认为 files(文件存储)。session...原创 2019-03-26 13:11:55 · 1283 阅读 · 1 评论 -
PHP或者JavaScript获取当前页面完整URL的方法
使用PHP:#不带参数$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];#带参数$url2='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];使用JavaScript:var topUrl=to原创 2018-01-29 16:24:11 · 227 阅读 · 0 评论 -
PHP通过地址获取经纬度【百度地图API】
/** * @param string $address 地址 * @param string $city 城市名 * @return array */function getLatLng($address='',$city=''){ $result = array(); $ak = '';//您的百度地图ak,可以去百度开发者中心去免费申请 $url ="http://ap...原创 2018-01-19 13:50:50 · 6342 阅读 · 0 评论 -
PHP获取两个经纬度之间的距离【百度地图API】
/** * @param int $lat1 纬度1 * @param int $lng1 经度1 * @param int $lat2 纬度2 * @param int $lng2 经度2 * @return array */function getDistance($lat1=0,$lng1=0,$lat2=0,$lng2=0){ $ak = '';//您的百度地图ak,可...原创 2018-01-19 13:57:54 · 3489 阅读 · 0 评论 -
PHP当中的常量及其声明
常量的特点:1、使用 define() 函数来定义常量,在 PHP 5.3 以后,也可以使用 const 关键字在类定义之外定义常量。如果常量被定义,就不能再改变或者取消定义。 2、常量只能包含标量数据(boolean,integer,float 和 string)。可以定义 resource 常量,但应尽量避免,因为会造成不可预料的结果。 3、可以简单的通过指定其名字来取得常量的原创 2018-01-17 11:04:35 · 415 阅读 · 0 评论 -
PHP支持的原始数据类型
在PHP语言的环境下,支持8中原始数据类型。1、四种标量类型boolean (布尔类型,true和false) <?php//声明一个布尔类型变量,使用关键字true或者false,不区分大小写$var = true;?> integer (整型)<?php//声明整型$a = 1234; // 十进制$b = -1234; // 负数$c = 0123; //原创 2018-01-17 10:32:36 · 645 阅读 · 0 评论 -
PHP正则判断字符串是否全是中文
场景:例如判断用户输入的中文名字<?php/** *判断字符串是否全是中文 */function isAllChinese($str){ if(preg_match('/^[\x7f-\xff]+$/', $str)){ return true;//全是中文 }else{ return false;//不全是中文 }}var_dump(isAllChinese('你原创 2018-01-23 10:12:43 · 2550 阅读 · 0 评论 -
Apache和Nginx的比较以及实用场景分析
Apache相比于Nginx的优点1、自带可以扩展的模块很多,很全面,想要的基本都能找到。2、rewrite(伪静态[1])功能比Nginx强大。3、比Nginx稳定多,坑少。Nginx相比于Apache的优点1、比Apache轻量很多,配置简单、易用,占用的服务器资源少。2、静态资源的分发能力强与Apache。3、抗高并发能力高于Apache很多。Ng原创 2017-12-29 13:26:26 · 455 阅读 · 0 评论 -
PHP应对并发,MySQL数据库防止数据不一致
分析:PHP本身是单线程语言,所以在应对并发的程序语言层面上面没有比较好的解决方案,不过可以借助其他设计来实现,例如基于MySQL的Innodb引擎下数据库本身的行锁实现,或者依靠Redis等队列存储来实现。这里来讲解一下基于MySQL的行锁的实现方式。注意:只有基于Innodb的引擎才支持数据库事务行锁,如果在实际操作过程中,执行不成功,请检查表引擎是否正确。另外行锁依靠数据事务提交而...原创 2018-01-22 10:33:54 · 1096 阅读 · 0 评论 -
PhpStorm默认快捷键大全(windows版本)
PhPStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。Phpstrom的一款名为Magicento的插件对快速创建Magento插件十分有用。常用快捷键设置快捷键:File -> Settings -> IDE Settings -> Keyma...转载 2017-12-28 16:30:51 · 1214 阅读 · 0 评论 -
PHP数组排序,一维数组,二维数组排序。
一维数组排序1、sort,rsort排序(r(reverse表示翻转,即为降序排列))<?php$arr=array(10,2,4,1,5,8,7,9);//默认的排序,按键值升序排序,键名被从新规定,例如10原来的键名是0,现在是10sort($arr);var_dump($arr);/*array (size=8) 0 => int 1 1 => int 2原创 2017-12-27 13:04:44 · 895 阅读 · 0 评论 -
Linux下搭建PHP开发环境,Php-Fpm进程管理。
目前PHP项目开发几种比较流行的架构搭建中,LNMP在性能方面是最好的,正因为如此,使得LNMP架构逐渐流行起来,今天,前面提到了Nginx部署,由于项目实际环境的需要,今天就在说一下怎么部署PHP。环境CentOS 6.3PHP 5.6安装步骤1. 下载并安装PHP:先下载文件到对应的目录,然后解压文件。[root@izbp1fpkhq7mg4o07jzot0z ~]# wget http://...原创 2018-03-24 09:40:27 · 630 阅读 · 0 评论 -
PHP单例模式实例
<?php/** * @brief:PHP单例模式实例 */class Single{ //静态私有成员变量保存该类对象 private static $obj=null; //防止克隆对象 private function __construct(){ } //防止new 创建对象 private function ...原创 2018-04-08 09:45:29 · 249 阅读 · 0 评论 -
要执行请求的操作,WordPress需要访问您网页服务器的权限
一般情况下是WordPress系统检测到文件目录权限不足,可以通过以下方式解决。赋予目录权限,如: chmod -R 777 wordpress在wp-config.php最后添加如下代码并保存define("FS_METHOD", "direct");define("FS_CHMOD_DIR", 0777);define("FS_CHMOD_FILE", 0777);...原创 2019-03-20 22:56:49 · 1290 阅读 · 0 评论