PHP

分类下相关文章

PHP 解析 URL 中的查询参数

举个例子,我想用 PHP 从一个给定的 URL 链接中提取查询参数 goods_id 的值。 实现方法 测试用的 PHP 版本:PHP 7.1.20 $product_link = "https://mobile.yangkeduo.com/goods1.html?goods_id=7717242955&page_from=23&share_uin=QXBIHIEFDSK7RH4TRIYMP4BW7E_GEXDA&refer_share_id=30a0099ec95f469e931800d00606d03e&refer_share_uid=403579 ...

阅读全文...

PHP 对象的浅复制(shallow copy)

上周遇到一个低级的 bug,半天没有找到问题所在,今天在蹲坑的时候,不知道为何脑子中想起了这个 bug, 然后突然意识到是否是因为没有进行对象 clone 造成的。 果然,问题就是因为在多次遍历同一个 laravel collection 时,反复对同一个对象的属性进行操作,导致后面的操作覆盖了之前的操作,所以在最终返回结果时,只保留了最后一次的操作结果。 浅复制(shallow copy) $copy_of_object = clone $object; 来做一个测试 <?php class City { public $name; } $c1 = new City; ...

阅读全文...

常用的 PHP 数值计算函数

对浮点数进行四舍五入 >>> $price = 100.8875; => 100.8875 >>> round($price, 2) // 保留两位小数 => 100.89 >>> round($price, 0) => 101.0 >>> $price = 100.1815; => 100.1815 >>> round($price, 2) // 保留两位小数 => 100.18 >>> round($price, 0) => 100. ...

阅读全文...

Malformed UTF-8 characters, possibly incorrectly encoded

PHP 后台调用三方的股票接口,在解析出股票名字后,要拼成 json 返回给前端时,报错 Malformed UTF-8 characters, possibly incorrectly encoded 第一次遇到这个错误,感觉比较新鲜。 我好奇的是,写了这么久 PHP 第一次遇到字符编码的问题,而用 Python 时,这种编码错误时不时的就会出现。 我用 chrome 看了一下这个接口返回头信息,编码是 GB18030。 Content-Type: application/javascript; charset=GB18030 编码转换方法: $rsp['data']['name' ...

阅读全文...

使用不同版本的 PHP 执行 composer install 命令

需求 我本地使用的是 php 7.1, 但是服务器上使用的是 php 7.0. 而我的服务器,本身性能问题。不方便在服务器上执行 composer install 命令。 所以只能将本地安装好的 vender 目录打包一并放到服务器上。 我需要本地能执行基于 php 7.0 生成 vender 目录下的依赖。 安装并管理多版本的 PHP 参考: https://www.tecmint.com/install-different-php-versions-in-ubuntu/ 开发机已按照的 PHP 版本: php -v PHP 7.1.20-1+ubuntu18.04.1+deb.sury.o ...

阅读全文...

centos 6 安装 php 7.1

查看 centos 系统版本号 cat /etc/redhat-release CentOS release 6.9 (Final) 安装 php 7.1 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm yum install mod_php71w php71w-opcache yum install php71w-cli php71w-mysql php71w-bcma ...

阅读全文...

php-fpm 配置文件检测

用过 Nginx 的兄弟都知道,修改 Nginx 配置文件之后,可以使用 nginx -t 来检测配置文件是否有语法错误。 今天配置 opcache 的时候,发现 php-fpm 也可以检测 php-fpm.conf , php.ini 等配置文件的正确与否。 sudo php-fpm7.0 -t [28-Dec-2018 08:57:02] NOTICE: configuration file /etc/php/7.0/fpm/php-fpm.conf test is successful sudo php-fpm7.0 -t Fri Dec 28 09:03:22 2018 (336 ...

阅读全文...

GuzzleHttp 请求设置超时时间

之前调用一个三方的 WEB API,大量的请求超时,导致 PHP 进程被占用完。整个网站一直报 504。 其中一个优化措施就是对三方 API 调用设置超时时间。 use GuzzleHttp\Client; $client = new Client(); $url = 'https://www.sunzhongwei.com'; try { $res = $client->request('GET', $url, ['timeout' => 1.5]); $res = $res->getBody(); } catch(\Throwable $ ...

阅读全文...

PHP 调用系统命令行,system() / exec()

system 与 exec 的区别 exec,可以指定 output 变量,且返回的结果是 array 结构。 >>> exec('ls', $output, $ret) => "some_file.txt" >>> $ret => 0 >>> $output => [ "app", "artisan", "bootstrap", "composer.json", "composer.lock", ] ...

阅读全文...

PHP 日期时间类 Carbon 的常见用法

Carbon 继承了 PHP DateTime 类,所以 DateTime 类的方法同样适用于 Carbon 类。 初始化一个日期 use Carbon\Carbon; $today = new Carbon('2018-08-01'); 本月第一天,上月第一天 $first_day = new Carbon('first day of this month'); $first_day = new Carbon('first day of last month'); return $month->format('Y-m'); // 2018-08 今日日期 echo Carbo ...

阅读全文...

PHP FPM status page

PHP FPM status page 用于查看 PHP FPM 进程池状态。 php7.0 的配置方法 首先配置 Nginx 的页面路径 location /status { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.0-fpm.sock; log_not_found off; } 再修改 www.conf 文件 /etc/php/7.0/fpm/po ...

阅读全文...

composer 安装依赖缓慢,查看 composer 的详细执行日志

在 windows WSL 上安装 composer 依赖 composer install 发现执行异常缓慢,怀疑没有走国内的镜像,而是直接访问的 github。 需要能看到 composer 的执行日志 composer -h 发现 composer 的参数支持 -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug 于是 composer -vvv install 果然,都是走 ...

阅读全文...

PHP: POST Content-Length of xxx bytes exceeds the limit of 8388608 bytes

用户上传了 4 个附件,每个小于 5M,但是总大小超过了 15 M。 在 Nginx 日志中找到了如下错误信息,还没有到 Laravel 日志那一层。 2018/08/13 10:14:38 [error] 8326#8326: *11432788 FastCGI sent in stderr: "PHP message: PHP Warning: POST Content-Length of 14424838 bytes exceeds the limit of 8388608 bytes in Unknown on line 0" while reading res ...

阅读全文...

解决 composer 安装 phpunit 失败问题

$ composer require --dev phpunit/phpunit Using version ^7.2 for phpunit/phpunit ./composer.json has been updated ...

阅读全文...

对以内部 git 仓库为 composer 依赖的 package,加上版本号

现实问题 之前同事做了一个 composer package,做为公司大量 laravel 项目的通用模块。 但是,在实际使用中,每个项目对改 package 的依赖版本是有所不同的。否则 composer update 会默认拉取最新的 dev-master 中的代码。 术语 VCS Version control systems (VCS) composer 依赖的 package 版本号来自哪里 实际上就是 VCS 中的版本号,例如,git 打的 version tag。 $ git tag v1.0 v1.0.1 v1.0.2 composer 在识别 version 的时候,会自动 ...

阅读全文...

近期节日

2019年09月20日 国际爱牙日
2019年09月21日 国际和平日
2019年09月22日 世界无车日
2019年09月23日 秋分
2019年09月23日 国际聋人节
2019年09月27日 世界旅游日
2019年10月01日 国庆节
2019年10月04日 世界动物日
2019年10月07日 重阳节
2019年10月08日 寒露
2019年10月09日 世界邮政日
2019年10月10日 辛亥革命纪念日
查看更多节日