PHP

分类下相关文章

对以内部 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 的时候,会自动 ...

阅读全文...

PHP 中 Error 与 Exception 的区别,及如何捕获

写了一段 JSON 解析的代码,由于数据源不能保证一定是 JSON,所以解析可能失败。 但是 PHP 的 json_decode 遇到无法解析的字符串,是不报错的,会直接返回空。而即使能解析出来,我也不太敢相信里面的字段是始终一致的。所以,不但需要判断能否解析成 JSON,还要判断字段是否缺少。出于偷懒的考虑,我想只捕获异常就好了,例如要捕获 Trying to get property of non-object 但是,下面的 try catch 怎么也捕获不到异常 try { // Code that may throw an Exception or Error. } cat ...

阅读全文...

Ubuntu 18.04 安装 PHP 7.1

sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php7.1-fpm php7.1-mcrypt php7.1-cli php7.1-xml php7.1-mysql php7.1-gd php7.1-imagick php7.1-recode php7.1-tidy php7.1-xmlrpc 确认安装成功 php -v PHP 7.1.17-1+ubuntu18.04.1+deb.sury.org+ ...

阅读全文...

升级 php composer 版本

在执行 composer update 时,报错 You made a reference to a non-existent script @php artisan package:discover 网上说是 composer 的版本太低,查看了一下当前安装的版本 composer -V Composer version 1.2.1 2016-09-12 11:27:19 解决方法,升级 composer 版本 composer selfupdate Updating to version 1.6.3 (stable channel). Downloading: 100% ...

阅读全文...

PHP 将数组的值赋值给一组变量

经常需要将一个字符串分割成一组值,然后赋值给不同的变量。 逐行赋值非常繁琐,于是查了一下 PHP 中是否有类似 python 中 a, b = (a, b) 的操作。 果然有 $info = array('coffee', 'brown', 'caffeine'); list($drink, $color, $power) = $info; echo "$drink is $color and $power makes it special.\n"; list 这个关键字,是专门为这个操作而生的。 可以忽略一个值。 list($drink, , $power) = $in ...

阅读全文...

PHP 日期时间处理汇总

解析字符串中的日期 $date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009'); echo $date->format('Y-m-d'); ...

阅读全文...

Mac OS PHP 版本升级 5.6 to 7.0

我的 Mac 上一直用的是 PHP 5.6,但是 Laravel 5.5 项目依赖于 PHP 7.0 以上。所以,本地的开发环境首先需要更新 PHP 的版本。 几个可选方案 homebrew 升级 php。我很忌惮 homebrew 这货,因为我不知道他在干啥,而且每次运行都会风扇狂转。 valet 看上去除了 tunnel 功能之外,跟 artisan serve 没有区别。而且也要使用 homebrew 升级 vagrant 安装一次太麻烦了。但是至少不用更新本地系统的 PHP 版本。然而 php 5.6 对我来说也没啥用。 phpbrew 管理 PHP 多版本。而我实际上只使用 php ...

阅读全文...

requires php ~7.1 -> your PHP version (7.0.18) does not satisfy that requirement

一个大兄弟本地用了 PHP 7.1 进行开发,而我本地是 PHP 7.0, 于是悲剧发生了。 composer install 之后报错 Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation reques ...

阅读全文...

PHP Composer 将指定依赖包版本降级

例如,我之前安装的是 laravel-permission (2.6.0) 但是我想降级到 1.4.0 版本 直接修改 composer.json 文件,并没有效果。 执行命令即可 composer require "spatie/laravel-permission:1.4" - Removing spatie/laravel-permission (2.6.0) - Installing spatie/laravel-permission (1.4.0) Downloading: 100% ...

阅读全文...

The StyleCI analysis has failed - PHP 语法检查

今天给一个 PHP 开源项目 pull request 的时候,发现 github 的代码自动检测提示我的代码有问题 The StyleCI analysis has failed 具体的错误分析 第一处:我猜测是双引号的问题 - 'delete_cancel_title' => "放心吧", + 'delete_cancel_title' => '放心吧', Laravel-Backpack/CRUD 项目根目录下有个 .styleci.yml 文件 里面只有一行配置 preset: ...

阅读全文...

使用 memory_limit 限制 PHP 进程的内存使用

memory_limit 顾名思义,即限制 PHP 进程对于内存的使用。例如: magento2 的系统要求里有关于 PHP memory_limit 的限制,不能低于 512M。(默认值为 128M, 如果不更改,会导致 magento 的后台处理逻辑无法正常执行) 看一下 PHP 官网的解释 This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all avai ...

阅读全文...

输出 PHP 500 具体错误信息

今天修改 PHP 实现的一个 ajax 接口时,报了 500 错误。虽然可以使用 var_dump / echo 打印日志来判断具体是哪一行报错,但是具体的出错原因依然未知。 找到一个简单的方法,不需要安装 xdebug 就可以看到具体的错误信息。 在对应的 PHP 文件中加入 ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); 再次请求这个报错的接口,就可以看到 error msg 了 <br /> <b>Notice</b&gt ...

阅读全文...

PHP 如何调用其他文件中的函数

绝大部分时候你只需要 require_once require, include, require_once, include_once 让人眼花缭乱,为何 python 中一个 import 可以解决的问题,到了 php 中变得这么复杂? include include 最神奇的地方是,可以引入远程的 php 文件,即 include 一个 URL 地址。我了个去,这种设计的初衷到底是什么?难道用来动态更新配置文件?用 json 接口不是更好。 include_once 有了 include 为何还要 include_once。我完全无法理解 PHP 的世界。。。 include 会带来的问 ...

阅读全文...

PHP 调试技巧之研修

最近调试 ecshop, 越发觉得自己的 PHP 调试技能不足,定位问题效率不够高。所以决定建个专题,把解决问题过程中学到的调试技巧记录一下 var_dump 页面中输出 array 很方便调试。但是,var_dump 的输出是没有排版的,也就是“一行流”,当要查看的信息量很大时,定位是件异常痛苦的事情。例如: $a = array ("laravel", "php", array ("vuejs", "angularjs", "reactjs")); var_dump($a); // 输出结 ...

阅读全文...

php

Hello World 新建一个 index.php 文件 <html> <head> <title>PHP Test</title> </head> <body> <?php echo '<p>Hello World</p>'; ?> </body> </html> 使用 PHP 内置 web server 进行本地开发调试 只需要在代码目录执行 php -S localhost:8000 即可在浏览器里看到首页内容了。参考 Built-in ...

阅读全文...

近期节日

2018年07月23日 大暑
2018年07月30日 非洲妇女日
2018年08月01日 八一建军节
2018年08月06日 国际电影节
2018年08月07日 立秋
2018年08月15日 日本投降日
2018年08月17日 七夕
2018年08月23日 处暑
2018年08月25日 中元节
2018年08月26日 火人节
2018年09月03日 抗日胜利纪念日
2018年09月08日 白露
查看更多节日