PHP 实现类似 C# MakeRelativeUri 方法

在使用 C# 的过程中,几乎可以全程只靠 MSDN,很多方法微软在 .NET 内封装了很规范的实现;而近期在使用 PHP 开发项目时遇到个小问题:获取文件或目录 A 相对与 B 的路径,翻了下 PHP Manual 发现 PHP 内核并没有提供官方实现,于是谷歌之,找到一份比较规范的实现,在此记录,以备查询。 0x00 原文 https://stackoverflow.com/questions/2637945/getting-relative-path-from-absolute-path-in-php

June 4, 2018 · Wi1dcard

phpize 简易入门

本文以安装 mongodb 扩展为例,简单讲解使用 phpize 给多版本 php 编译安装扩展。 0x00 准备 假设你的服务器有多个版本 php,你首先要找到对应版本 php 的 phpize、php-config 程序。通常它们与 php 所处目录相同。 接下来下载你的扩展源码包,多数扩展源码都能在 github 或 pecl 下载到。

April 30, 2018 · Wi1dcard

PHPBrew - 多版本 PHP 共存开发神器

phpbrew 是一个构建、安装多版本 PHP 到用户根目录的工具。 GitHub:https://github.com/phpbrew/phpbrew phpbrew 能做什么? 配置选项简化为「Variants」,无需担心路径问题。 支持使用 PDO,mysql,sqlite,debug 等不同「Variants」编译 PHP。 针对不同版本,分别编译 apache php 模块,互不冲突。 无需 root 权限将 PHP 安装到用户根目录。 集成至 bash / zsh shell 等,易于切换版本。 支持自动特性检测。 易于安装、启用 PHP 扩展。 支持在系统环境下安装多个 PHP。 路径检测针对 HomeBrew 以及 MacPorts 进行了优化。 安装需求 在开始之前,请先查看:Requirement(英文)。 确保已安装依赖包的开发版本用于编译 PHP。

March 17, 2018 · Wi1dcard

纠结!纯内网 Web 控制智能硬件的技术选型之路

通常情况下,我们采用 TCP Socket 与智能硬件进行通信。外网环境中,有无数种解决方案:Swoole(PHP),Node.js,SuperSocket(.NET)…… 而在政企事业单位的内网环境,事情或许就不那么好办了。 0x01 目的 接收来自硬件的数据,并在 Web 端展示。 通过 Web 端操作,将指令下发至硬件。 0x02 限制 浏览器需要支持 IE 等老版本浏览器。 服务端需要支持 Windows Server 虚拟机(最低版本 2008)。 纯内网环境,无法访问外网源,无法使用各类包管理器(其实可以自己搭建内网源,但过于复杂,人力成本太高)。 0x03 思路 目前公司 Web 后端语言均为 PHP,所以以下思路全部围绕 PHP 开展。

March 11, 2018 · Wi1dcard

Thumb - 自带缓存配置的单文件 PHP 缩略图库

PHP GD 扩展提供了图像处理的接口,本文为大家介绍一款非常小巧易用的缩略图库,支持多种缩放方式、多种输出格式、自带缓存配置…… 0x00 源码 首先当然是放源码: wi1dcard/Thumb 原作者代码因为多年没有维护,我进行了大量调整和优化,暂时就不合并了。 0x01 使用 使用方法非常简单,将thumb.php复制到 Web 服务器目录下,打开此文件。文件头部提供一些可供修改的参数,包括缓存目录等。 我们在此目录下创建cache文件夹,并确保 PHP 拥有rw权限。 接下来,随便找一张图片放在此目录下,接着使用 Postman 访问:

March 9, 2018 · Wi1dcard

由浅入深:Laravel Broadcast 实现 WebSocket B/S 实时通信

Laravel 集成众多开包即用的功能, 虽然它真的很"胖", 但这并不影响它是个好框架. 本篇文章将采用 Laravel 5.6 版本由浅入深为大家演示: 如何使用内置的 Broadcast(广播)功能实现与客户端实时通信. Tips: 此仓库实现本文中的 0x02 广播 代码。 0x00 准备 广播系统 - Laravel 5.

March 2, 2018 · Wi1dcard

Nginx+PHP 环境 499 错误码排查过程小记

前言 某公安项目过程中,在内网服务器部署 WNMP 环境,运行 Laravel 框架代码,后查看日志发现某一时刻突然所有请求 499,并持续一段时间,遂排查原因。 过程 0x01 经搜索得知: 哪些情况下会使 Nginx 返回 HTTP CODE 499? 即:「客户端主动关闭连接」 但某一时间段内全部请求均为返回 499,这显然不是所有客户端主动意识上的「关闭」,可能是因为客户端等待超时,自动关闭连接;加上 499 的时间段内包含部分 502,让我不得不怀疑:

February 2, 2018 · Wi1dcard

Why PHP?浅谈选择 PHP 作为后端主力开发语言的原因

在各类交流群,甚至多数老一辈程序员的眼里,认为 PHP 是「轻量的」、「不完善的」、「性能难以优化」的,而这么多年来一直坚挺的 Java 却成了开发「XX 系统」的后端首选语言。为此,本篇文章将尽量从非技术角度告诉大家:Why PHP? 现状 其实,从 Java 和 PHP 的历史不难看出。在 Java 开始盛行的年代,PHP 还是个“毛头小子”,只是个普普通通的脚本语言罢了,甚至连面向对象的基本概念——类,都没有支持。 鉴于 PHP 历代升级以来坚守的向下兼容性,至今还可以看到不少用「当年的」原生函数写出来的产品代码可以运行,透过命名规则我们也可以看出当年的 PHP,好像的确「不够完善」。

January 18, 2018 · Wi1dcard

Laravel 5.5 连接 MS SQL(SQL Server)数据库

因项目需要,要使用 Laravel 连接微软的 SQL Server,虽然这种组合显得非常奇葩,但经过测试还是可以成功实现的。 准备 首先,因为 Laravel 连接数据库默认是使用 PDO 扩展,而 PDO 连接 SQL Server 需要使用 pdo_dblib 扩展,所以首先第一步就是安装此扩展。 MAC 系统 直接使用 brew 命令安装即可。

November 2, 2017 · Wi1dcard

UCenter 1.6 Client Example 对 PHP7 兼容不良的排查与修复

没错又踩坑了。 因项目需要与 DZ 论坛实现 SSO 登录、账号同步等功能,经老司机波波推荐,直接使用 DZ 官方产品 UCenter 集成即可;于是陈晟&潘昭宇折腾了一天 UCenter,可还是遇到了过不去的“拦路虎”,于是接近下班之际,决定接手这个问题,不知不觉踏上了过节依旧加班的不归路。 UCenter UCenter 是原 DZ 团队(现已被腾讯收购)开发的一套统一认证系统(顾名思义:User Center),具体介绍参见:百度百科。这套产品已经非常有年头,以现在的眼光再来审视当时的架构确实存在不少问题,当然,这并不影响它具有历史价值。 先来说下 UCenter(下称UC)的大致架构吧,这是坑踩完之后总结出来的,为了不影响后续理解所以提前介绍。

October 27, 2017 · Wi1dcard