LMLPHP后院

PHP扩展exif源代码编译安装教程技术

maybe yes 发表于 2016-12-02 23:35

PHP 的 exif 扩展可以很方便的读取相机拍摄的图片的原始信息,此扩展的函数只有五个,但是却单独的做成了一个扩展。此扩展在 pecl 库 images 分类中是找不到的,需要直接下载 PHP 源代码才能找到。

虽然网上有人提供了使用正则的方式获取相机拍摄的原图的相关信息,但是不够稳定和成熟,主要是各大厂商存储的图片信息格式不一致。

关于手动编译安装 PHP 的扩展,其实我已经很多年没有这样做过了。但 exif 扩展比较重要,在某些发行版比如 ArchLinux 上并不默认安装这个扩展,所以需要在 PHP 官方网站下载原始代码编译安装。

所有的技术产品网站都有一个通病,就是很难找到历史版本在哪里下载。PHP 在下载页面暴露出来的下载链接,点进去依然只有几个版本的下载,由于我使用的 PHP 版本是 php-7.0.9,所以必须找到对应的版本来安装扩展。在 mirror 页面找到一个版本后,尝试修改地址,结果找到了我需要的版本链接。如下所示镜像页面地址:

关于HTML标签textarea换行符注意事项技术

maybe yes 发表于 2016-12-01 07:59

HTML 本身的规范设计的还是很合理的,兼容性也很强。本文讲解下 textarea 换行符需要注意的问题。

几乎所有浏览器,textarea 的换行提交到服务端对应的字符串都是 \r\n。目前我使用到的浏览器包括 IE8 测试下来都是这样。

关于 textarea 的兼容性,测试下来,兼容性也特别好。服务端输出的换行符如果是 \r 或者是 \n,都能正常显示成一个换行符,如果服务端返回 \r\n,也是显示一个换行符。

出于好奇,测试了下,如果服务端返回 \n\r,结果则显示两个换行符。

MySQL常用修改表结构命令整理技术

maybe yes 发表于 2016-11-29 23:06

好记性不如烂笔头,记录一些常用的 MySQL 修改表结构相关命令。

修改表中已有字段结构:

> alter table {table_name} modify column {column_name} varchar(24) not null default '';

向表中增加字段并指定位置:

> alter table {table_name} add column {column_name} varchar(50) not null default '' after {column_name};

修改表中已有字段的名称:

> alter table {table_name} change {column_name} {new_column_name} int(11) unsigned NOT NULL default '0';

HTTP协议代理相关头Vary等的含义技术

maybe yes 发表于 2016-11-28 22:36

HTTP 协议头有很多字段,一般人不太可能把所有的字段的含义都弄清楚,并且 HTTP 协议本身也允许用户自定义协议头,所以一些不常用的协议头的含义就不是很重要了。本文主要讲解 HTTP 代理相关的协议头 Vary,Via,Proxy-Connection 等的含义。

不喜欢长篇大论,看网上的一些文章动不动就页面拉不到底,真的很怀疑作者真的认真看过自己写的每一个字吗?

Vary 的英文含义是 “改变,变化,使多样化”。Vary 属于 HTTP 协议的内容协商机制的一种实现,个人认为其主要是为反向代理服务器(缓存服务器)服务的,其值一般情况下是“Accept-Encoding”。HTTP 的内容协商机制除了 Vary 外,还可以通过 300 Multiple Choices 响应头来实现,不过这样就比较麻烦,需要一次往返网络请求,很费时。

如何让MySQL支持utf8mb4字符集技术

maybe yes 发表于 2016-11-27 18:48

就像我前面文章提到的,我一直很想亲自试试 utf8mb4 字符集,这个支持 emoji 的字符集到底是有什么样的魔力。

下面讲述了实现的方式。

前提条件是 MySQL5.5 版本之后才可以支持,目前新买的 VPS,新装的系统一般都是支持的。

修改 /etc/my.cnf,如下配置:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
2024-11-19 20:40:18 1732020018 0.014545