php
是人非人的人
这个作者很懒,什么都没留下…
展开
-
PHP mcrypt 加解密兼容openssl
mcrypt_encrypt mcrypt_decrypt 已经比较古老,7.1 + PHP已经不支持。新的替换方式使用openssl_encrypt openssl_decrypt。 升级会涉及到新老加解密方式兼容问题。*** 低版本PHP mcrypt ***private function _pkcs5Pad($text, $blockSize) { $pad = $blockSize - (strlen($text) % $blockSize); return $text . st.原创 2021-05-25 11:49:26 · 484 阅读 · 0 评论 -
PHP导出csv 注意事项
public function export($search) { header("Content-Type: text/csv"); header("Content-Disposition: attachment; filename={$filename}.csv"); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0原创 2021-05-08 19:39:21 · 246 阅读 · 0 评论 -
composer常用参数说明
composer 常用参数说明:-vvv 是实时说出执行的详细详细,适合出问题调试。dump-autoload 重新加载包生成autoload文件。–no-scripts 不需要执行 composer.json中scripts相关与定义脚本–no-dev 不安装composer.json中 require-dev中相关包。 这里必须是重新安装才会有效,直接update无效。...原创 2018-08-08 21:13:21 · 1069 阅读 · 3 评论 -
composer 执行内存超出问题解决
说明:最近在服务器上安装包,composer require xxx/xxx,提示错误内存耗尽。 Allowed memory size of 536870912 bytes exhausted….解决办法:修改php.ini中 memory_limit 配置,但是需要相关的权限服务器操作权限。 可以通过这个命令:php -r “echo ini_get(‘memory...原创 2018-08-08 20:51:06 · 13715 阅读 · 2 评论 -
composer使用慢的解决办法
简单说下composer update和composer install区别:这里说下 composer 的机制, 当 `composer.lock` 文件存在的时候, 执行 `composer install` 命令时, composer 会更新按照 `composer.lock` 里的 package 指定版本进行安装, 如果是执行 `composer update` 的话, 会更新 `pac原创 2016-07-19 09:37:13 · 13103 阅读 · 3 评论 -
好用的composer命令
composer update -vvv —prefer-dist —profilecomposer update -vvv —prefer-dist —profile --no-plugins原创 2016-07-04 09:25:49 · 315 阅读 · 0 评论 -
Laravel关于$errors变量的问题
1.laravel视图开发中有些版本中,可能遇到$errors未定义。这种问题参照segment中这个问题:https://segmentfault.com/q/1010000004209713?_ea=5300182.介绍下$errors变量变量的由来。laravel kernel中 $middlewareGroups->web 配置有\Illuminate\View\Middleware...原创 2018-03-14 16:50:37 · 4367 阅读 · 0 评论 -
yii使用中的需要注意的并发更新问题
说明下这个问题出现背景。最近新开发一个类似于电商的系统,里面会涉及到很多更新操作,入商品的库存更新。之前以为没有注意到并发操作的问题,导致代码存在问题。记录下来,加深印象避免后续再有这样的问题。这里还是使用的yii1框架,大家知道一般yii1中更新数据,一个有两种操作方式。代码如下:使用update方法,还有update,updateAll具体方法这里不具体讨论(new model)...原创 2018-12-08 17:32:58 · 1226 阅读 · 0 评论 -
gii设置访问权限
最近接手yii1开发的一个项目,开发一个新的功能。需要创建个表,使用对应gii生成model。结果提示需要输入密码,看了配置才知道yii1中gii 配置有password属性。后来查看yii2中没有这个,只有ip限制这里主要介绍下ip限制,之前就遇到过本地测试可以,到线上环境就无法访问了。配置:$config['modules']['gii'] = [ 'class' =...原创 2018-11-08 22:24:20 · 714 阅读 · 0 评论 -
yii2 中gii/debug访问时出现403禁止访问
主要是因为访问的地址限制,默认只能本地测试访问。本来这些调试信息也不应该在正式环境中展示。 但是需要使用,也可以特别申明访问地址允许使用。地址是指访问的客户端地址,不是服务器地址!!!tips:我使用的是yii2 advanced版本,在config/main-local.php$config = [ 'components' => [ 'r...原创 2018-08-08 20:23:58 · 1608 阅读 · 3 评论 -
yii2 别名使用
说明:在yii2中别名使用,主要是配合文件系统使用。最近一个项目需要使用七牛云sdk,把本地文件上传到七牛云上。在上传过程中需要获取文件绝对路径,需要使用到别名。使用步骤:添加启动配置<?phpYii::setAlias('@common', dirname(__DIR__));Yii::setAlias('@frontend', dirname(dirnam...原创 2018-07-21 17:45:59 · 1205 阅读 · 0 评论 -
Yii2 参数配置使用
在用框架开发项目时,很多通用的方便修改的,会写出配置文件。如 七牛云上传的ak,sk,domain,bucket,zone,微信开发的appid, appserect等。 laravel中配置文件在config目录写,可以任意创建获取文件,通过config方法获取。在yii2 中主要是在config params.php 和params-local.php文件中。 1.参数格式<...原创 2018-07-21 17:20:21 · 3738 阅读 · 0 评论 -
yii2美化路由相关配置
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设转载 2017-04-19 09:18:21 · 1609 阅读 · 0 评论 -
PHP隐式类型转换常见问题
因为PHP式弱类型语言,变量的类型是运行的上下文决定的。很多时候运行存在隐式转换问题,给代码带来异常情况。例子 var_dump(0 == 'all') // true // 这里会把 all 转换成整型0 var_dump(0 === 'all') // false // 类型不变 $array = [ 'a' => 1, 'b' => true, 'c' => false, 'd' => 'ttt',];原创 2020-05-24 17:14:08 · 552 阅读 · 0 评论 -
PHP 输出方式汇总
echo输出一个或多个字符串(输出其他格式会转换成字符串,对象输出会提示错误)是语言结构,不是函数可以传递多个参数无返回值<?phpecho "hello world\n";// hello world$a = "hello";echo "$a world\n";// hello worldhelloworld$b = "world";echo $a,$b."\n";//helloworld$c = [1,2,3];echo $c."\n";..原创 2020-05-24 11:40:02 · 683 阅读 · 0 评论 -
php call_user_func(),call_user_func_array()使用和区别
call_user_func(),call_user_func_array() 是用来调用回调函数一般使用如下://调用的是静态方法<?phpnamespace Foobar;class Foo { static public function test($param) { print "Hello world! \$param \n"; }原创 2017-11-10 15:10:23 · 6217 阅读 · 0 评论 -
php中使用carbon获取上个月第一天和最后一天
说明:使用PHP开发项目,经常会涉及到获取昨天,前天,上周,上个月的起始时间等这种需求。有个一个比较好用的工具,Carbon类,里面封装了常用的获取方式。这里主要统计上个月的数据,要知道上个月的第一天和最后一天时间。获取时间格式://上个月第一天Carbon::now()->subMonth()->firstOfMonth()//上个月最后一天Carbo...原创 2018-08-20 16:58:06 · 12992 阅读 · 0 评论 -
file_get_contents 函数证书问题
最近项目中把网站升级https。升级后发现有错误信息,file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:\nerror:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed查了相关资料...原创 2018-10-16 15:30:21 · 3440 阅读 · 0 评论 -
curl库支持https
默认情况CURL是不支持的HTTPS。如果需要支持, 需要重新编译CURL。HTTPS支持需要OPENSSL库,也需要重新编译。主要操作步骤如下:安装opensslwget https://www.openssl.org/source/old/1.1.0/openssl-1.1.0f.tar.gztar -zxvf openssl-1.1.of.tar.gzcd openssl./...原创 2018-10-16 15:45:19 · 3593 阅读 · 0 评论 -
PHP array_column用法
一般array_column是获取二维数组的制定列,组成新的数组输出。今天看到有可以制定第三个参数,制定输出数组的key。&lt;?php$arr = [ [ 'id' =&gt; 1, 'name' =&gt; 'a' ],[ 'id' =&gt; 2, 'name' =&gt; 'b', ], [...原创 2018-10-23 20:00:37 · 9935 阅读 · 0 评论 -
MAC MAMP添加PHP redis扩展
使用mac开发,mamp是比较好用的一套集成环境。其中包含了各个版本的配置选择。但是里面的自带的php很多扩展没有安装,需要自己手动添加。这里主要介绍安装redis扩展下载redis扩展源码git clone https://github.com/nicolasff/phpredis.git进入目录,依次执行如下命令1. phpize;2. ./configure --w...原创 2018-10-29 19:59:50 · 530 阅读 · 0 评论 -
MAC MAMP添加PHP pcntl扩展
使用mac开发,mamp是比较好用的一套集成环境。其中包含了各个版本的配置选择。但是里面的自带的php很多扩展没有安装,需要自己手动添加。这里主要介绍安装pcntl扩展下载对应版本的php源码,我这里使用的是http://cn2.php.net/distributions/php-7.0.31.tar.gz解压,进入到ext文件夹,依次执行如下命令。1. phpize2. ./co...原创 2018-10-29 20:05:11 · 1578 阅读 · 0 评论 -
PHP str_pad函数使用
<?php$string = 'Hello World!';//使用给出的字符 填充字符串,到整个字符串长度为20//如果该参数值小于字符串的原始长度,则不进行任何操作//左边添加echo str_pad($string, 20, '.', STR_PAD_LEFT).PHP_EOL;//运行结果:........Hello World!//右边添加echo str_...原创 2018-10-26 19:01:37 · 680 阅读 · 0 评论 -
PHP array_pad函数用法
<?php//填充数组到制定长度$array = [1,2,3,4];$array1 = [ [1],[2],[3],[4]];print_r(array_pad($array,6, 'abc'));//运行结果:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => abc [5] =>...原创 2018-10-26 19:03:36 · 526 阅读 · 0 评论 -
PHP开发优化建议
第一类、变量类型:1)主要是使用未定义变量,而直接使用变量,做程序开发结束的时候,程序员都喜欢关闭debug,让一切Notice和Warning都影藏起来,但实质上php即使关闭debug也会记录日志,将所有的Notice和Warning信息全部写入日志文件中,无非是一件浪费性能的事,很多phper都有这个小习惯,包括我也一样。2)另外在程序中应尽量注意变量的使用,如字符串最好使用单引号,而不...转载 2018-11-01 13:41:04 · 931 阅读 · 0 评论 -
php中解决并发插入的方法
很多项目开发中会涉及到并发插入的问题,最近看到一种比较简单的解决办法,也谈不上好坏,原理是差不多的。主要是利用redis存在一个key唯一的固定值称为锁,每次插入操作前检查锁是否存在,如果存在就等待一会在来执行。如果不存在,开启锁,执行插入操作,操作成功后在释放锁。一般常用的这种方法的项目,肯定会封装成全局的方法。如: Redis::lock(),Redis::unlock()。实例如下...原创 2018-12-08 18:00:37 · 1346 阅读 · 0 评论 -
PHP引用问题-传值与传引用(一)
前段时间换工作,前后面试了大概两个礼拜,有十几家公司。现在把遇到的频率比较高的题目整理出来,给年后需要找工作的小伙伴。希望对你有帮助。基本上面试PHP的工作岗位,必不可少的是要考察地址相关知识。想想这么希望问这一块的问题,无外乎两个原因:1. 这一块平时工作很少用(几乎不用) 2. 这一块大部分人不清楚,使用中容易产生问题。具体结合下面的题目:$a = 1;$b = $a;$c = &amp;...原创 2019-01-26 20:42:55 · 1203 阅读 · 0 评论 -
PHP引用问题-数组中foreach使用引用(二)
前段时间换工作,前后面试了大概两个礼拜,有十几家公司。现在把遇到的频率比较高的题目整理出来,给年后需要找工作的小伙伴参考。在PHP 中引用的意思是:不同的名字访问同一个变量内容。PHP地址相关的问题,一般喜欢两种形式的,一种是考察传值和传引用(具体可以参考请一篇文章PHP地址问题-传值与传引用(一))。另一种就是本篇文章说的,循环中使用引用(一般要修改数组中值,除了$k => $v形...原创 2019-01-26 21:48:31 · 755 阅读 · 0 评论 -
PHP中布尔型常见问题
前段时间换工作,前后面试了大概两个礼拜,有十几家公司。现在把遇到的频率比较高的题目整理出来,给年后需要找工作的小伙伴参考。针对boolean型主要有两方面的问题。类型转换,其他类型转换成boolean结果<?phpvar_dump((bool) ""); // bool(false)var_dump((bool) 1); // bool(tr...原创 2019-01-27 17:28:23 · 903 阅读 · 0 评论 -
PHP PDO绑定IN/NOT IN语句中Array变量
最近项目中使用的框架,封装了IN方法,但是没有封装NOT IN 。 使用NOT IN 只能用原生的PDO语法,想当然的写出来,结果就是BUG。tips: 表结构| id ||:----|| 1 || 2 || 3 || 4 |刚开始的代码如下:<?phptry {$dns = "mysql:host=***;dbname=*";$pdo = new PD...原创 2019-07-27 19:48:30 · 1803 阅读 · 0 评论 -
php命令行模式相关参数说明
composer使用内存超出,使用php -d可以临时设置php.ini中变量。感觉挺有意思,到服务器上找了具体的参数和说明。 供大家参考Usage: php [options] [-f] <file> [--] [args...] php [options] -r <code> [--] [args...] php [options] [-B...原创 2018-08-08 20:56:44 · 576 阅读 · 0 评论 -
wamp3.1.3不能添加php环境变量执行composer解决
重新换回wamp3.1.3开发环境,发现不能切换版本,主要原因是不能添加php到环境变量里面,具体问题见这篇博客:https://blog.csdn.net/hu_feng903/article/details/81259834 但是去掉了php环境变量,composer这些要怎么用?可以通过添加.bat脚本或者直接修改composer.bat来解决。 我这里是采用第二种办法,直接修改C:...原创 2018-07-28 12:48:21 · 998 阅读 · 6 评论 -
Yii模型中自动维护时间戳
在Yii中开发项目,经常需要维护表中的 创建时间created_at,修改时间时间 updated_at。可以通过模型中行为来实现。具体参照如下代码/** * 自动添加时间戳,序列化参数 * @return array */ public function behaviors() { return [ [ ...原创 2018-03-08 21:12:49 · 1520 阅读 · 0 评论 -
php 检查是否微信浏览器
做微信相关开发,经常需要检查是否是来源微信访问。写的简单实现方法如下:function isWeiXinBrowser() { $user_agent = $_SERVER['HTTP_USER_AGENT']; if (strpos($user_agent, 'MicroMessenger') === false) { return...原创 2018-02-11 14:26:15 · 1734 阅读 · 0 评论 -
php实现阿拉伯数字到中文大写转换
/** * 阿拉伯数字到中文大写转换 * * @param $num * @param bool $mode * @return string */ private function getChineseNumber($num, $mode = true) { $char = array("零", "壹"原创 2018-02-05 13:38:37 · 813 阅读 · 0 评论 -
php处理脚本常用配置
经常用到php写处理数据的脚本,尤其是处理数据量比较大的时候。一般需要在脚本开始添加以下设置:1.ob_end_flush ()功能:冲刷出(送出)输出缓冲区内容并关闭缓冲详情见官方文档:http://php.net/manual/zh/function.ob-end-flush.php2.set_time_limit(0)功能:设置脚本执行时间,默认是30,设置成0可以一直执行。避免处理超时的问...原创 2018-02-09 21:32:40 · 185 阅读 · 0 评论 -
laravel中实现发送邮件功能
在laravel 中实现发送邮件,很方便。主要包含以下几步1.建立寄送类。有些版本中app/Mail中自带了发送类,如果没有可以通过php artisan make:mail SendMail(可以根据具体需求建立对应的名称),一般针对一个特定的需求,建立一个类。<?phpnamespace App\Mail;use Illuminate\Bus\Queueable;use Illum...原创 2018-02-09 19:14:46 · 916 阅读 · 0 评论 -
php读取目录中文文件名乱码解决方法
最近项目需要,读取指定文件夹下中文word文件,生成文件名列表。直接读取会乱码,文件名表名问题。解决办法:循环读出的文件名,转换编码iconv('GB2312', 'UTF-8' $v)原创 2018-02-05 13:25:49 · 8121 阅读 · 1 评论 -
php 删除字符串中html标签
最近需要处理一段html字符串,需要移除其中的所有html标签。截取前100个中文展示使用php字符串处理方法preg_replace,正则匹配替换。mb_substr(preg_replace("//", "", $str), 0 ,100)也可以通过 preg_match_all,正则规则比较麻烦些。原创 2017-11-14 11:26:51 · 1222 阅读 · 1 评论 -
php中is_int(),is_integer(),is_numeric(),ctype_digit()区别
这几个函数是开发中经常遇到的,检查整数类型数据。简单介绍下区别和关系1.is_integer 是 is_int() 的别名,是一样的2.is_int/is_integer主要是判断变量是否 是整数类型,其他类型是false3.is_numeric 检测变量是否为数字或数字字符串<?phpecho is_int(23); //trueecho is_int('23')原创 2017-11-09 11:06:54 · 7520 阅读 · 0 评论