PHP

分类下相关文章

重定向跳转引起的 PHP $_Post 和 php://input 数据为空

今天在 ThinkPHP 下测试获取 HTTP 请求 POST 数据时,发现无论怎么测试,都获取不到 POST 的数据。 $_POST 为空 php://input 也为空 但是在另外一台服务器上测试,却是正常可以获取到的。 查了半天没有找到问题,好不容易找到一个 Google 的结果,发现确实由于链接跳转引起的问题。 例如: 我测试时,是向 http://www.sunzhongwei.com/api 发送 POST 请求,而实际上 http 的请求会我设置的 nginx 自动重定向到 https 的链接 https://www.sunzhongwei.com/api。这种情况下,ph ...

阅读全文...

PHP 7.1 报错:Cannot use string offset as an array

有一段在 PHP 5 下运行正常的代码,放到了 PHP 7.1 环境下执行报错。 报错信息为: Cannot use string offset as an array 代码片段 $data = ‘’; foreach ($_POST as $k=>$v) { $data[$k]['id'] = $k; // 报错 $data[$k]['val'] = I("post.".$k); } 解决方法 将初始化的空字符串替换为 array。 $data = array(); 不明白为啥字符串还有这种谜一样的操作,而且 PHP5 居然还允许 。。。 ...

阅读全文...

ubuntu 18.04 安装 php 7.3

sudo apt update sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php7.3-fpm php7.3-mcrypt php7.3-cli php7.3-xml php7.3-mysql php7.3-gd php7.3-imagick php7.3-recode php7.3-tidy php7.3-xmlrpc php7.3-mbstring php7.3-curl 确认安装完成: # ...

阅读全文...

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 果然,都是走 ...

阅读全文...

近期节日

2019年11月20日 国际儿童日
2019年11月21日 世界问候日
2019年11月22日 小雪
2019年11月22日 感恩节
2019年11月29日 黑色星期五
2019年12月01日 世界艾滋病日
2019年12月03日 国际残疾人日
2019年12月07日 大雪
2019年12月09日 "一二九"运动纪念日
2019年12月09日 世界足球日
2019年12月10日 世界人权日
2019年12月12日 西安事变纪念日
查看更多节日