
PHP实践问题集锦
文章平均质量分 69
PHP的开发过程中遇到的问题多且复杂,本专栏经过长期积累,总结了大量实际工作中遇到的问题。专栏问题收集包括PHP基础、Yii、Yii2、整合第三方支付、第三方登录等实际项目开发中遇到的难点。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
小雨青年
2025年和我一起做属于自己的独立开发项目!CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。
展开
-
【WordPress】解决阿里云虚拟主机上WordPress配置支持Https
一、环境描述服务器环境:阿里云-> 虚拟主机软件版本:WordPress 5.8.2PHP版本:7.4二、问题描述虚拟主机在配置强制https跳转之后,网站首页已经强制https,但是资源文件还是访问https,造成网站不可用。三、解决方案修改项目文件/wp-config.php文件,在文件最前面添加如下内容。$_SERVER['HTTPS'] = 'on';define('FORCE_SSL_LOGIN', true);define('FORCE_SSL_ADMIN',原创 2021-12-27 20:53:44 · 797 阅读 · 0 评论 -
【PHP】kartik\datetime\DateTimePicker日期选择插件设置最大选择时间
最大时间设置endDateDate. Default: End of timeThe latest date that may be selected; all later dates will be disabled.实际代码[ 'options' => ['placeholder' => ''], 'pluginOptions' => [ 'autoclose' => true, 'todayHighlight' =原创 2021-05-10 10:58:38 · 801 阅读 · 0 评论 -
【PHP】1分钟解决PHP时间戳到Mysql数据库问题
前言如标题所示,这篇主要讨论的问题是PHP按时间戳存时间持久化到MySql最多能到多长日期,超出范围怎么办?问题分析PHP存储Int类型最大是多少?整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 9E18,除了 Windows 下 PHP 7 以前的版本,总是 32 位的。 PHP 不支持无符号的 integer。Integer 值的字长可以用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以原创 2021-04-25 14:27:58 · 716 阅读 · 0 评论 -
【php】获取汉字词语转拼音pinyin
用途主要用于存储建立简单的搜索表,在页面上根据中文英文首字母排序,比如城市,省份,或者通讯录内。代码 function pinyin($_String, $_Code='utf-8') { $_DataKey ="a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha". "|chai|cha原创 2020-10-26 17:48:27 · 596 阅读 · 0 评论 -
【token】JWT详解 3 Laravel JWT自定义错误返回
原因因为jwt如果token验证失败,会返回验证失败,但是因为格式没有被通过配置控制,所以在前后端交互上很麻烦自定义中间件创建中间件文件文件的位置在app/Http/Middleware,内容如下<?phpnamespace App\Http\Middleware;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpExcep原创 2020-10-24 23:58:53 · 1595 阅读 · 0 评论 -
【token】JWT详解 2 Laravel 安装使用JWT
安装Laravel使用的jwt组件推荐使用tymon/jwt-authcomposercomposer require tymon/jwt-auth部署修改config/app.php,添加内容'providers' => [ Tymon\JWTAuth\Providers\LaravelServiceProvider::class,]在根目录执行php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\L原创 2020-10-24 23:58:17 · 1161 阅读 · 0 评论 -
【Yii2】页面缓存PageCache源码解析以及使用详解
PageCachePageCache的使用是通过在控制器的过滤器,针对限定的action使用组件public function behaviors(){ return [ [ 'class' => 'yii\filters\PageCache', 'only' => ['index'], 'duration' => 60, 'variations' => [原创 2020-10-21 10:24:05 · 650 阅读 · 0 评论 -
【Yii2】Yii2自定义注册组件工具类以及实现原理源码分析(上)
前言在Yii2中,应用组件(Application Components)是一个比较重要的概念,框架内很多的功能,比如urlManagerdbuser都是通过组件实现的。组件是如何被调用的配置文件组件的配置位置在 app(应用文件夹)/config/main.php其中的 components就是组件的配置位置,比如用户验证的user组件就是如下配置注册机制组件的本质是服务定位器(Service Locator)的其中一个实现,而定位服务器的本质是一个全局的对象,你可以通过\原创 2020-10-13 15:03:56 · 452 阅读 · 0 评论 -
【Yii2】使用indexBy解决查询结果不重复的问题
【Yii2】使用indexBy解决查询结果不重复的问题问题描述当我们使用ActiveRecord进行连表查询的时候,如果主表和关联表的关系是一对多的,就会在查询结果中出现多条主表id相同的数据但是经过ActiveRecord查询返回的结果分页后,得到的数据就没有重复,对应的数据就会少给我们直接的感觉是分页下来这个页面的数据不够一页的分析原因经过查看Yii2的源代码,我发现在all操作内,会做一次去重操作代码位置 vendor/yiisoft/yii2/db/Query.php /**原创 2020-09-23 05:43:35 · 793 阅读 · 0 评论 -
【web】SESSION的原理以及跨域验证
一、适用范围仅限于web端的身份验证,和app端使用的jwt验证是不同的。二、SESSION为什么存在SESSION首先,HTTP是无状态的,每次请求相互独立,这样就会造成,你不认识我,我也不认识你。但显然这样是不能满足需求的,对于用户体系的网址,我们需要知道每次请求的用户是谁,这样才可以在这个基础上对用户的数据进行操作。那么,如果服务器保存一个用户标识,每次客户端请求数据都带着标识,这个服务器就知道是哪个用户进行的操作,这也就是为什么存在SESSIONSESSION的生成和校验客户端第一原创 2020-07-15 14:50:31 · 521 阅读 · 0 评论 -
【Yii2】高级模板跨应用调用组件的最佳解决方案
项目需求在Yii2的高级模板中,可以创建多个应用。目前有两个应用网站管理后台其中网站使用pageCache作为缓存组件。由于使用缓存组件,导致后台的内容没有及时更新,所以,需要在后台创建模块,手动刷新网站的缓存。思路使用网站配置文件在后台注册组件也就是说,在缓存模块上,直接注册组件,再调用方法。经过实践,不可行修改Yii.php在后台项目注册网站组件由于改动比较大,没有完成具体操作解决方案直接使用后台模块加载网站配置具体思路如下网站使用的路径被注册在common/con原创 2020-07-07 14:15:52 · 815 阅读 · 0 评论 -
【Laravel】Laravel-admin后台框架-3配置菜单 用户 权限 rbac
前言前面我们搞定了基本的模块内CURD的操作,可以参考之前的文章【Laravel】Laravel-admin后台框架-2创建数据表建立模块增删改查CURD(2)【Laravel】Laravel-admin后台框架-2创建数据表建立模块增删改查CURD(1)【Laravel】Laravel-admin后台框架-1安装实战Laravel-admin 是基于用户的权限管理系统RBAC,并且整个菜单和授权的流程比较自由,我下面的操作流程准确的基于角色权限绑定而不是其他的。创建权限业务上我们创建对原创 2020-06-24 11:10:17 · 3259 阅读 · 0 评论 -
【Laravel】Laravel-admin后台框架-2创建数据表建立模块增删改查CURD(2)
前言前面的操作我们已经能够安装Laravel-admin创建数据表并生成模型修改模型实现按业务写入数据可以参考之前的文章【Laravel】Laravel-admin后台框架-2创建数据表建立模块增删改查CURD(1)【Laravel】Laravel-admin后台框架-1安装实战对于一个基本的模块,还有需要完成如下功能自定义列表,格式化输出内容列表筛选字段以及规则列表文本以及对应的按钮查看页面的格式化输出列表页展示目前的列表页面是这样的很显然,日期和评分展示的内容是原创 2020-06-23 14:01:30 · 1055 阅读 · 0 评论 -
【Laravel】Laravel-admin后台框架-2创建数据表建立模块增删改查CURD(1)
前言前面我们已经能够完整创建Laravel-admin的项目了,接下来要在做中学,学习如何实际创建一个符合业务的模块,完成CURD的操作。实战定义业务业务:比如我们要做个健身教练录入上课训练的记录,记录每次教学的情况。设计数据表目前只做一张表,后续再迭代。CREATE TABLE `fit_record` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_name` varchar(255) NOT NULL DEFAULT原创 2020-06-22 15:43:34 · 1572 阅读 · 0 评论 -
【Laravel】Laravel-admin后台框架-1安装
前言Laravel是众所周知的优雅的PHP框架。Laravel-admin可以快速实现后台的搭建,并且可以帮助不熟悉laravel的人快速熟悉。但是再好用的工具也有学习的过程,下面开始我们由浅入深的学习吧~安装环境macOS10.15.5PHP7.4.2coderfix.blog.csdn.net@localhost blog % php -v PHP 7.4.2 (cli) (built: Feb 17 2020 12:56:02) ( NTS )Copyright (c) The原创 2020-06-19 18:22:13 · 1765 阅读 · 0 评论 -
【MAMP】macOS下使用MAMP的php环境版本配置方法
前言众所周知,macOS是自带php的,但是由于版本较低并且扩展不全,所以不推荐开发环境使用。MAMP是支持macOS的开发套件,可以自由切换phpb版本,对于开发来讲还是挺方便的。操作版本说明macOS10.15.5MAMP5.7,pro版本和普通版本差距不大MAMP选择PHP版本在语言选择界面选择需要的PHP版本。注意!一定要勾选下面的在命令行启用。如果你用的nginx,要选择CGI模式下运行。查看当前命令行PHP版本仔细观察系统自带的php扩展,是不全的,比如没有zi原创 2020-06-19 09:58:32 · 2491 阅读 · 0 评论 -
【Yii2】页面点击图片全屏放大封装小部件
需求在后台管理系统中,一般遇到图片列表或者详情,都会要求点击放大展示完整图片,毕竟在列表中不能百分百展示完整图片。实现最终效果的实现是在img增加点击事件,在另一个div中展示图片。为什么要封装在小部件里呢,当然是方便调用。需要这个效果的界面很多,如果每个页面都复制粘贴的话,非常不优雅,并且不好维护。下面是完整代码BackendBigImg.php<?phpnamespace common\widgets;use common\models\DmAdPosition;use y原创 2020-06-18 01:11:28 · 706 阅读 · 0 评论 -
【Yii2】Yii2使用Mongodb配置并解决SyntaxError: missing ] after element list以及Authentication failed
环境lixiaoyu@localhost basic % php -vPHP 7.1.32 (cli) (built: Feb 17 2020 12:26:26) ( NTS )Copyright (c) 1997-2018 The PHP GroupZend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologieslixiaoyu@localhost basic % ./yii This is Yii version 2.0.35.原创 2020-05-15 14:47:26 · 1310 阅读 · 0 评论 -
【Yii2】模型Model中使用rules规则定义场景setScenario限制规则
业务需求在我们的日常需求中,会有这种数据表中存在图片字段,为必填,需要在操作过程中做到创建数据时,图片字段必须修改数据时,图片字段如果不传,就不修改解决方案业务数据操作如果要保持原来的图片数据,那只要修改的时候带着原来的参数即可加载表单时带原来的数据图片数据放在隐藏的文本域中提交表单时如果图片上传的字段没有值,就将原来的图片数据从隐藏文本域中拿出来这样的操作当然能满足需求,但是太复杂了定义场景setScenario在Yii的数据操作中,一般的逻辑如下判断是否有提交数据Y原创 2020-05-13 18:28:37 · 1703 阅读 · 0 评论 -
【Yii2】yii2-editable在GridView上修改数值并刷新页面
需求因为业务需求需要修改数据的排序值,但是为了单独修改排序值打开页面提交数据又对用户操作不好,所以我决定采用直接在列上对数据进行修改。版本说明PHProot@1bd5d900decc:/var/www/html# php -vPHP 7.0.25 (cli) (built: Nov 4 2017 10:58:36) ( NTS )Copyright © 1997-2017 The ...原创 2020-05-06 17:44:31 · 1824 阅读 · 3 评论 -
【PHP】认识PHP的垃圾回收机制(1)
前言本文的目的不仅仅是总结PHP的垃圾回收机制,而是要发散思维,从垃圾回收机制中得到更多的细节。什么是垃圾回收垃圾回收机制广泛存在于各种编程语言中,由于每个变量被定义都会占用一部分内存空间,如果这些空间长期不被释放,系统的内存就会出现不足的情况,为了保证系统能在软件运行过程中有足够的内存使用,就需要这样一套回收机制,释放掉不需要使用的内存空间。高级语言一般在自动实现了垃圾回收,不需要我们主...原创 2020-03-13 01:52:19 · 452 阅读 · 0 评论 -
【Yii2】修改框架入口增加配置适应开发生产环境
为什么首先,每个框架要保证自己的易用性,不会搞得特别复杂。然后,实际项目中,作为一个工程,我们要保证团队成员的项目配置傻瓜化。因此可见,修改入口文件是有足够的必要性的。操作修改index.php文件位置web/index.php,在前面增加如下内容$config = __DIR__ . '/../.env';if(!isset($config)){ return 'no...原创 2020-02-20 00:21:34 · 605 阅读 · 0 评论 -
【微信小程序】微信小程序扫描自定义二维码到指定页面的坑
重点测试版本不需要发布也可以进行测试测试阶段不发布,只能扫描测试链接中的地址中的二维码,其他的就算符合规范也不可以如果是要动态匹配参数,那么动态部分必定是/后面的字符串如果是要动态匹配参数,那么提交的地址最后一定带/提交地址对应的项目路径下必须有验证文件,所以不建议设置过长的路径 ...原创 2018-09-11 17:41:29 · 13935 阅读 · 3 评论 -
【小程序】微信小程序的个人开发者发布最佳实践
前言微信小程序在3月27日新增了6项能力,其中第一条就是对个人开发者开放注册。这无疑是大快人心的好事!之前我写过一篇微信小程序的文章,不过主体是企业的身份来做的,并且也没有走到发布的流程,http://blog.csdn.net/diandianxiyu_geek/article/details/53068012这次可以完美的走完这套流程了~注册账户和之前的一样,只是我们选择的是新增个人身份。选择小原创 2017-03-30 19:17:45 · 24280 阅读 · 6 评论 -
【小程序】手把手带你完成微信小程序开发实践
帐号相关流程注册范围企业政府媒体其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账户信息绑定管理员微信企业认证公司对公账户对微信进行打款账户自动验证后,自动认证通过,并将认证资金退回公司对公账户,费用在1元内随机小程序发布流程开发实践这次的demo项目为农历和公历的转换器,重在体验原创 2016-11-07 17:14:27 · 349497 阅读 · 25 评论 -
【PHP】PHP7的异常处理详解
前言PHP7的改动中,影响比较大的,包括异常处理。概述更多的异常是直接通过PHP直接处理的,和之前的PHP5不同的是更多的异常是通过Error exceptions来抛出。作为一个普通的扩展,Error exceptions会持续冒出直到匹配到对应的catch块。如果没有进行匹配,就会触发被设置的set_exception_handler()来执行处理,如果没有默认的异常处理程序,原创 2016-01-20 16:38:21 · 5440 阅读 · 0 评论 -
【源码分析】极验验证官方SDK源码分析和实现思路
前言2016年就这么来了,新的一年,继续努力~最近,除了12306的验证码火起来以后,还有一个在界面上拖拽的验证码,也火了起来,就是这次要说的极验验证,在这个万众创新的时代,工具类产品能做到这样,也是很不错的~源码来源来自于官网提供的PHP SDK https://github.com/GeeTeam/gt-php-sdk 官方在http://www.geetest.com/install/se原创 2016-01-04 16:08:06 · 6622 阅读 · 2 评论 -
【Laravel】Laravel5遇到的问题以及解决方案
LARAVEL5.1创建应用流程本次采用composer进行安装,参考地址如下http://stackoverflow.com/questions/28893710/whoops-looks-like-something-went-wrong-laravel-5-0总结如下确定你的项目文件夹 storage 和 bootstrap/cache 的写入权限把项目中的 .env.example 文原创 2015-12-17 17:45:07 · 5856 阅读 · 0 评论 -
【emoji表情】阿里云数据库RDS支持emoji表情
前言由于最近几年移动App的兴起,手机自带表情作为用户输入的方式开始流行。但是emoji表情作为一种特殊的编码方式,之前的数据库字符编码不能正常显示。解决在mysql5.5之后的版本,utf8mb4的编码方式解决了emoji表情和生僻字的编码问题。下面整理下为了兼容emoji表情,我们在数据库服务上做出的修改。数据库字符集也就是在创建数据库的时候选择的支持字符集,由于创建之后这项不能进行修改,所以只原创 2015-06-17 19:58:25 · 7960 阅读 · 0 评论 -
【GIFDecoder】GIFDecoder的排错以及修改另附完整代码和demo
前言好久没有写技术类的博客了,今天有些小的收获,记录下来,留作备份Gif图片的处理由于业务需求,需要对gif动图的第一帧进行截取,然后我就搜索,发现了GIFDecoder这样的一个类,是做gif图片的处理的,怎奈国内人博客环境还是那么差,各种网站博客到处抄抄抄,没有一个完整的内容,经过多个站的资料整理,终于能用了。出现了异常在运行demo的时候,遇到了显示错误的问题 Notice: Undefi原创 2015-05-21 11:06:02 · 3272 阅读 · 3 评论 -
【Nginx】LNMP环境下的后续配置
前言完成了基本的配置后,我们可以直接在nginx上运行php环境了,那么,接下来要做的就是后续的一些操作配置网卡由于现在的上网方式从分配固定的ip变成了自动分配,所以需要重新修改网卡配置查看虚拟机配置,虚拟机采用的是Mac上的然后修改网卡配置文件,改成对应的mac地址以及dhcp[root@localhost ~]# vi /etc/sysconfig/原创 2015-01-04 18:06:29 · 2855 阅读 · 0 评论 -
【Nginx】centos6.5下安装lnmp环境
前言好久没有写博客了,真是不好,感觉接触的东西越来越多,如果不记录下来的话,就会慢慢忘记。因为业务需要,apache的负载能力已经不能满足现在的需求了,所以决定采用nginx作为服务器,承载更多的接口访问。准备工作centos6.5的虚拟机一台,重新装的系统,没有别的东西Nginx更新源因为yum自己不支持nginx,所以需要自己更新一下。[ro原创 2014-12-27 16:03:13 · 2190 阅读 · 0 评论 -
【PHP缩略图类】手机照片不能生成缩略图问题以及解决方案
【本文原创,谢绝转载】一、出现的问题这几天做了手机上传照片并裁出缩略图的接口的测试,发现不管怎么,生成的缩略图都是一片漆黑。:-(然后就把这个缩略图类单拿出来进行测试,发现只要是手机拍出来的照片都不能进行缩略图的处理。。。。二、问题分析以及解决方案经过群里的请教,发现问题可能是出现在文件的类型的判断上,因为png图片自带一个透明的图层,导致不能直接转换成jpg的原创 2014-07-23 20:50:33 · 3237 阅读 · 1 评论 -
PHP cookie知识点
一、设置cookie使用cookie前必须设置cookie.函数原型:int setcookie(string name,string value,int expire,stringpath,string domain,int secure)其中,除name外,所有的参数都是可选的,可以用空的字符串表示未设置.属性value: 用来指定值.属性path: 用来指定cookie被发送到服原创 2013-11-26 11:32:18 · 1235 阅读 · 0 评论 -
【codeception】在Yii2框架下使用自带codeception进行单元测试提示model类不存在解决方法
开发环境以及版本PHP 7.3.12PHP 7.3.12 (cli) (built: Nov 21 2019 19:00:57) ( NTS )Copyright (c) 1997-2018 The PHP GroupZend Engine v3.3.12, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7...原创 2019-12-04 17:27:35 · 1565 阅读 · 0 评论 -
【PHP】安装phpoffice/phpspreadsheet环境OneinStack安装ext-fileinfo这个扩展
安装phpoffice/phpspreadsheet环境OneinStack安装ext-fileinfo这个扩展Composer安装phpoffice/phpspreadsheet1.添加"phpoffice/phpspreadsheet":"1.8.*"到composer.json2.执行composer install报错1 首先出现下面的提示Installation reques...原创 2019-07-31 19:59:03 · 11390 阅读 · 0 评论 -
【PHP】Yii2下PHP生成无限制微信小程序码
业务场景用户对外分享微信小程序,携带用户个人数据总共生成的小程序码数量不确定具体实现调用接口微信实现生成二维码的方式有三种createWXAQRCodegetWXACodegetWXACodeUnlimit这里需要采用getWXACodeUnlimit,通过该接口生成的小程序码,永久有效,数量暂无限制。参数业务通过scene传递参数,其他用于修饰样式。限制为最大32...原创 2019-02-25 18:12:10 · 2125 阅读 · 2 评论 -
【Yii2】Yii2使用yii2-admin做RBAC权限管理的安装基本使用
RBAC 基于角色的权限管理为什么要管理权限在我们的系统中,存在不同的角色,每个角色对应的操作各不相同。比如一个角色负责发布文章,他的上级角色负责审核文章,另一个上级则发布文章和审核文章的权限都有。这时候就需要一个标准化的工作流来处理这些逻辑。为什么是RBAC像这种需求,在大部分管理系统都是存在的,经过一段时间的抽象化,大家便总结出了RBAC权限管理.基本的逻辑...原创 2018-08-19 16:07:19 · 6155 阅读 · 0 评论 -
【PHP】面试题整理PHP部分
PHP语句include和require都能把另一个文件包含到当前文件中,它们的区别是?为了多次包含同一文件,可以用什么语句替代它们?include引入不存在,会报warning require引入不存在,会报fatal error _once如果之前已经引用过,就不会重复引用,如果没有加_once,重复引用就会出现致命错误 include_once之前需要检查是否有引用,所以不如includ原创 2017-06-26 22:24:51 · 2166 阅读 · 0 评论 -
【PHP】定时计划没有执行PHP脚本以及解决方案
问题cron 定时触发任务,但是始终没有执行,并且在/var/log/cron里也没有对应的日志产生,并且也在php-fpm的日志文件下也没有错误日志产生。分析&&解决cron没有执行?并没有 : (service crond statuscrond (pid 5467) is running...文件没有执行权限?并没有 : (ls -al-rwxrwxrwx .........环境变量没原创 2016-04-12 19:36:05 · 2211 阅读 · 0 评论