CentOS 和 macOS 下安装 PHP 7 的 tidy 扩展


作者: 我不是鱼 (2018-12-23 22:12) 分类: PHP   标签: Tidy

Tidy是HTML清理和修复的实用程序,它支持操作HTML、XHTML和XML文档。比如说用户通过所见即所得html编辑器提交的html内容,人为地做成一些 html tag 的不匹配,很容易地破坏了整个页面的html结构。例如

测试内容
<div>测试

这里没有 </div> 结束tag,整个页面的结构就被破坏。这时 tidy 就可以很好地派上用场,它既可以检查输入内容的html结构,又可以修复这些不合法的内容。也可以输出 pretty 的 html。当然这些都是后话了,先安装了 php 的 tidy 扩展再说吧。

首先是在 CentOS PHP 7.1.0 安装 tidy

老办法:pecl

[root@lnmp lnmp.cn]# pecl install tidy

pear/tidy requires PHP (version >= 4.3.0, version <= 6.0.0), installed version is 7.1.0

No valid packages found

install failed


pecl 上的 tidy 版本并不支持 php 7.1。到 http://pecl.php.net/package/tidy 上看了下,最新的版本 1.2 还是2005年发布的,支持 php 4.3

感觉不至于啊,再到 php 上看了下 http://php.net/manual/en/tidy.installation.php 

This extension is bundled with PHP 5 and greater, and is installed using the --with-tidy configure option.

这下明白了,原来 PHP 5 之后, tidy 已经捆绑到 php 中,安装是直接 --with-tidy 就行。这里不是新安装 php,而只是安装 tidy 的 php 扩展。

找到或者重新下载 php-7.1.0 的安装源码, 我之前是安装在 /usr/local/src/php-7.1.0/ 目录,进入扩展的tidy目录

[root@lnmp lnmp.cn]# cd /usr/local/src/php-7.1.0/ext/tidy

也是老方法:phpize 安装

[root@lnmp tidy]# /usr/local/php7/bin/phpize

[root@lnmp tidy]# ./configure --with-php-config=/usr/local/php7/bin/php-config

如果 configure 的时候出现这个错误:

checking for gawk... gawk

checking for TIDY support... yes, shared

configure: error: Cannot find libtidy

先安装 libtidy-devel

[root@lnmp tidy]# yum install libtidy-devel

如果提示找不到这个package

No package libtidy-devel available.

Error: Nothing to do

需要先加入 epel 的 yum 源

[root@lnmp tidy]# rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

然后再重复上面的步骤安装 libtidy-devel

安装好 libtidy-devel 后,重复上面的 configure 步骤安装 php tidy 扩展

configure 好后再

[root@lnmp tidy]# make

[root@lnmp tidy]# make install

Installing shared extensions:     /usr/local/php-7.1.0/lib/php/extensions/no-debug-non-zts-20160303/

可以看到 tidy.so

[root@lnmp tidy]# ls /usr/local/php-7.1.0/lib/php/extensions/no-debug-non-zts-20160303/

http.so  opcache.a  opcache.so  propro.so  raphf.so  ssh2.so  tidy.so

在 php.ini 中加入 tidy.so

[root@lnmp tidy]# vim /usr/local/php-7.1.0/lib/php.ini 

加入

extension="tidy.so"

重启 php-fpm

[root@lnmp tidy]# systemctl restar php-fpm

这样 tidy 就安装好了


接下来是在 macOS PHP 7.1.23 安装 tidy

首先我的 php 是用 brew 安装的,php下的扩展则是用 pecl 安装的,这里 pecl 是行不通了,无论是 mac 还是 centos,都不支持 php 7。试了试看能不能也用 brew 安装

Thomass-MacBook-Pro:lnmp.cn Thomas$ brew search php
==> Formulae
brew-php-switcher                  kabel/php-ext/php@5.6-oci8         kabel/php-ext/php@7.1-snmp         php-cs-fixer
kabel/php-ext/php-enchant          kabel/php-ext/php@5.6-pdo-oci      kabel/php-ext/php@7.2-enchant      php@5.6
kabel/php-ext/php-imap             kabel/php-ext/php@5.6-recode       kabel/php-ext/php@7.2-imap         php@7.1 ✔
kabel/php-ext/php-oci8             kabel/php-ext/php@5.6-snmp         kabel/php-ext/php@7.2-oci8         php@7.2
kabel/php-ext/php-pdo-oci          kabel/php-ext/php@7.1-enchant      kabel/php-ext/php@7.2-pdo-oci      phplint
kabel/php-ext/php-recode           kabel/php-ext/php@7.1-imap         kabel/php-ext/php@7.2-recode       phpmyadmin
kabel/php-ext/php-snmp             kabel/php-ext/php@7.1-oci8         kabel/php-ext/php@7.2-snmp         phpunit
kabel/php-ext/php@5.6-enchant      kabel/php-ext/php@7.1-pdo-oci      php
kabel/php-ext/php@5.6-imap         kabel/php-ext/php@7.1-recode       php-code-sniffer

==> Casks
homebrew/cask/eclipse-php                                              homebrew/cask/netbeans-php

找不到 php-tidy,brew 也无法安装。

pecl 不行,brew 也不行,这个可犯难了。突然想到其实也可以下载 php 源码,再用 phpize 安装

下载 php-7.1.23 源码

Thomass-MacBook-Pro:lnmp.cn Thomas$ cd /usr/local/src

Thomass-MacBook-Pro:src Thomas$ wget -c http://cn2.php.net/distributions/php-7.1.23.tar.gz

解压,并进入 tidy 目录

Thomass-MacBook-Pro:src Thomas$ tar -zxvf php-7.1.23.tar.gz

Thomass-MacBook-Pro:src Thomas$ cd php-7.1.23/ext/tidy/

phpize 进行安装

Thomass-MacBook-Pro:tidy Thomas$ /usr/local/Cellar/php@7.1/7.1.23/bin/phpize

Thomass-MacBook-Pro:tidy Thomas$ ./configure --with-php-config=/usr/local/Cellar/php@7.1/7.1.23/bin/php-config

Thomass-MacBook-Pro:tidy Thomas$ make

Thomass-MacBook-Pro:tidy Thomas$ make install

Installing shared extensions:     /usr/local/Cellar/php@7.1/7.1.23/pecl/20160303/

tidy.so 已经好了

Thomass-MacBook-Pro:tidy Thomas$ ls /usr/local/Cellar/php@7.1/7.1.23/pecl/20160303/

memcached.so msgpack.so tidy.so zmq.so

加入到 php.ini 中

Thomass-MacBook-Pro:tidy Thomas$ php --ini

Configuration File (php.ini) Path: /usr/local/etc/php/7.1

Loaded Configuration File:         /usr/local/etc/php/7.1/php.ini

Scan for additional .ini files in: /usr/local/etc/php/7.1/conf.d

Additional .ini files parsed:      /usr/local/etc/php/7.1/conf.d/ext-opcache.ini

Thomass-MacBook-Pro:tidy Thomas$ vim /usr/local/etc/php/7.1/php.ini

加入

extension="tidy.so"

至此,tidy 已经在 mac 中安装好了

Thomass-MacBook-Pro:tidy Thomas$ php -m | grep tidy

tidy

前一篇: 从 PHP 7.2 升级到 PHP 7.3


添加评论

昵称:


验证码