在CentOS上把PHP从5.4升级到5.5

摘要:本文记录了在CentOS 6.3上,把PHP从5.4.8升级到5.5.13的过程。

1. 概述

在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括Git、Nginx、MySQL和PHP。这篇文章讲的是升级PHP的过程,其他软件的升级,可见下面列出的文章。

在我加入这个项目之前,服务器上的PHP已经安装设置好了,我只是正常使用而已。现在过去1年了,所有的开发工作都告一段落,有时间升级服务器上的软件了。升级这种事情是应当经常做的,倒不是为了追最新版本,而是当正式版本发放出来的时候,应该及时更新, 以便获得最新的更正、补丁,避免服务器上的漏洞,减少安全隐患。

升级是在今年6月13-14日进行的,到今天才有空做个记录,便于日后参考。

2. 计划

计划就是预案,就是事先的准备(包括心理上的)、更明细的步骤、对各种情况及对意外的对策,当然,我们不可能面面俱到,预测一切,不然就成神了,所以要随时准备脱稿演出,think out of the box。

2.1 了解情况

计划要有针对性,所以要先”踩点儿“。

通过在系统上,用find之类的命令,或者通过网页用phpinfo()函数来显示关于PHP的信息,可以找到PHP安装在/usr/local/php目录下。这说明PHP是从源代码编译安装的,因为yum和rpm是不会安装到/usr/local/php这个路径的。在QQ群友的提示下,找到PHP 5.4.8的源代码位于/usr/local/src/php-5.4.8目录中,进一步确认PHP是从源代码编译安装的。

查看PHP版本:

# /usr/local/php/bin/php -v

PHP5.4.8 (cli) (built: Nov 13 2012 00:08:08)

Copyright (c)1997-2012The PHP Group

Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Tehnologies

再查看PHP-FPM的运行情况。那两天看文档,我才知道有PHP-FPM(FastCGI Process Manager)这么个东西,在5.4之后已经包括在PHP之中了,详见参考资料[]13][14]。

查看PHP-FPM使用的端口:

# netstat -ntpul | grep php-fpm

tcp0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2881/php-fpm

查看PHP-FPM的进程:

# ps aux | grep php-fpm

USER PID%CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root2881 0.0 0.2 204172 2064 ? Ss 2013 38:09 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

www18982 0.0 1.4 212796 14816 ? S 19:12 0:03 php-fpm: pool www

www18983 0.0 1.4 211996 14572 ? S 19:13 0:03 php-fpm: pool www

www18984 0.0 1.4 212276 14876 ? S 19:13 0:03 php-fpm: pool www

root19144 0.0 0.0 103236 864 pts/0 S+ 23:29 0:00 grep php-fpm

查看PHP-FPM的版本:

# /usr/local/php/sbin/php-fpm -v

PHP5.4.8 (fpm-fcgi) (built: Nov 13 2012 00:15:58)

Copyright (c)1997-2012The PHP Group

Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

查看上次系统启动的时间,这是怕安装的东西没重启而没有生效:

# who -b

system boot2013-01-04 01:07#lastreboot

reboot system boot2.6.32-279.14.1. Fri Jan 4 01:07 - 20:36 (526+19:29)

reboot system boot2.6.32-220.13.1. Mon Nov 12 17:53 - 20:36 (579+02:42)

reboot system boot2.6.32-220.13.1. Thu May 10 17:12 - 17:13 (00:01)

reboot system boot2.6.32-220.13.1. Wed May 9 15:31 - 15:36 (00:04)

reboot system boot2.6.32-220.13.1. Wed May 9 15:03 - 15:29 (00:26)

reboot system boot2.6.32-220.13.1. Wed May 9 10:09 - 12:26 (02:16)

reboot system boot2.6.32-220.13.1. Thu May 3 17:23 - 17:25 (00:02)

reboot system boot2.6.32-220.13.1. Fri May 4 01:17 - 17:22 (-7:-54)

reboot system boot2.6.32-220.13.1. Fri Apr 20 21:33 - 17:22 (12+19:48)

reboot system boot2.6.32-220.13.1. Sat Apr 21 03:39 - 17:22 (12+13:42)

reboot system boot2.6.32-220.13.1. Fri Apr 20 18:02 - 17:22 (12+23:19)

reboot system boot2.6.32-220.13.1. Thu Apr 19 19:51 - 17:59 (22:07)

其实这种担心是多余的,因为Linux和Windows不一样,基本上新安装的东西,都有命令行可以重启,只要你知道相应的命令行,不需要重启整个系统。

小结,现有的PHP 5.4.8安装在/usr/local/php目录下,是编译安装的,源代码位于/usr/local/src/php-5.4.8目录中。编译安装的好处是,可以自己定制,增减PHP扩展等等。建议,如无必要,不要使用编译安装,因为这样的安装,操作麻烦,对操作者的要求比较高,又无法利用yum和rpm这样的工具,不便于升级、卸载。

这也是为什么我用yum update php命令无法直接升级PHP的原因,因为yum或者rpm根本不知道用源代码编译安装的PHP。下面是我尝试的结果:

# yumupdate php

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile* base: mirrors.163.com*epel: mirrors.hust.edu.cn* extras: mirrors.163.com*remi: mirrors.hustunique.com* remi-php55: mirrors.hustunique.com* updates: mirrors.163.com

Setting up Update Process

Package(s) php available, but not installed.

No Packages markedfor Update

可见,yum没有找到已经安装的php包,所以没什么可以升级的。孤独的编译安装,没人待见,看来要在角落里终老一生了。

2.2 确定计划

经过在几个CakePHP、PHP相关的QQ群里,向其他朋友的请教和讨论,(此处略去15000字),其实这是和上面的”踩点儿“互相掺杂在一起进行的。在这里要特别感谢CakePHP群中的Christian和严谨的PHP HHVM MySQL群中的Linux 管理员(Freax)两位朋友。最终在朋友们的帮助下形成了下面的计划要点:

保留原有编译安装的PHP 5.4.8,没必要去动它,不用就是了

用yum安装PHP 5.5.13,配置PHP-FPM 5.5.13使用另一个端口(比如9001)

修改Nginx的配置,使用在新端口上的PHP-FPM 5.5.13

如何重启PHP-FPM?

答:php-fpm在5.4以后默认是二进制文件了,不再用service php-fpm start这种启动了。可以在/etc/rc.local (link to /etc/rc.d/rc.local) 加上这条命令

前期的调研、计划,花了差不多2天时间,而之后的安装、配置,也就用了3-4个小时。

3. 安装、配置PHP 5.5.13

根据这两天读的文档,确定使用remi安装库,使用yum来安装PHP 5.5.13。

3.1 添加remi安装库

下面的操作依据参考资料[4]:

# wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

# rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

3.2 用yum安装PHP 5.5.13

从之前PHP 5.4.8下phpinfo()的输出,知道了旧的PHP 5.4.8上安装的PHP扩展,这样确定了下面需要安装的包(命令yum install之后的参数):

# yum install php php-fpm php-gd php-mysqlnd php-mcrypt php-mbstring php-pdo

Dependencies Resolved================================================================================Package Arch Version Repository Size================================================================================Installing:

libjpeg-turbo x86_64 1.2.1-3.el6_5 updates 174k

replacing libjpeg.x86_64 6b-46.el6

libjpeg-turbo-devel x86_64 1.2.1-3.el6_5 updates 96k

replacing libjpeg-devel.x86_64 6b-46.el6

php x86_645.5.13-3.el6.remi remi-php55 2.6M

php-fpm x86_64 5.5.13-3.el6.remi remi-php55 1.3M

php-gd x86_64 5.5.13-3.el6.remi remi-php55 69k

php-mbstring x86_64 5.5.13-3.el6.remi remi-php55 958k

php-mcrypt x86_64 5.5.13-3.el6.remi remi-php55 40k

php-mysqlnd x86_64 5.5.13-3.el6.remi remi-php55 261k

php-pdo x86_64 5.5.13-3.el6.remi remi-php55 109k

Installingfordependencies:

apr-util-ldap x86_64 1.3.9-3.el6_0.1 base 15k

fontconfig x86_642.8.0-3.el6 base 186k

gd-last x86_64 2.1.0-2.el6.remi remi 129k

httpd x86_642.2.15-30.el6.centos updates 821k

httpd-tools x86_64 2.2.15-30.el6.centos updates 73k

libX11 x86_641.5.0-4.el6 base 584k

libX11-common noarch 1.5.0-4.el6 base 192k

libXau x86_641.0.6-4.el6 base 24k

libXpm x86_643.5.10-2.el6 base 51k

libmcrypt x86_642.5.8-9.el6 epel 96k

libtiff x86_643.9.4-10.el6_5 updates 343k

libxcb x86_641.8.1-1.el6 base 110k

libxslt x86_641.1.26-2.el6_3.1 base 452k

mailcap noarch2.1.31-2.el6 base 27k

php-cli x86_64 5.5.13-3.el6.remi remi-php55 2.5M

php-common x86_64 5.5.13-3.el6.remi remi-php55 1.0M

php-pear noarch 1:1.9.4-28.el6.remi remi 373k

php-pecl-jsonc x86_64 1.3.5-1.el6.remi.5.5 remi-php55 46k

php-pecl-zip x86_64 1.12.4-1.el6.remi.5.5 remi-php55 269k

php-process x86_64 5.5.13-3.el6.remi remi-php55 54k

php-xml x86_64 5.5.13-3.el6.remi remi-php55 206k

t1lib x86_645.1.2-6.el6_2.1 base 160k

Transaction Summary================================================================================Install31 Package(s)

yum自动计算出需要的依赖安装包,总共有31个安装包需要下载、安装。

下面询问是否继续下载,回答y,并按回车即可继续:

Total download size: 13M

Is this ok [y/N]: y

Downloading Packages:

(1/31): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm | 15 kB 00:00(2/31): fontconfig-2.8.0-3.el6.x86_64.rpm | 186 kB 00:00(3/31): gd-last-2.1.0-2.el6.remi.x86_64.rpm | 129 kB 00:00(4/31): httpd-2.2.15-30.el6.centos.x86_64.rpm | 821 kB 00:00(5/31): httpd-tools-2.2.15-30.el6.centos.x86_64.rpm | 73 kB 00:00(6/31): libX11-1.5.0-4.el6.x86_64.rpm | 584 kB 00:00(7/31): libX11-common-1.5.0-4.el6.noarch.rpm | 192 kB 00:00(8/31): libXau-1.0.6-4.el6.x86_64.rpm | 24 kB 00:00(9/31): libXpm-3.5.10-2.el6.x86_64.rpm | 51 kB 00:00(10/31): libjpeg-turbo-1.2.1-3.el6_5.x86_64.rpm | 174 kB 00:00(11/31): libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64.rpm | 96 kB 00:00(12/31): libmcrypt-2.5.8-9.el6.x86_64.rpm | 96 kB 00:00(13/31): libtiff-3.9.4-10.el6_5.x86_64.rpm | 343 kB 00:00(14/31): libxcb-1.8.1-1.el6.x86_64.rpm | 110 kB 00:00(15/31): libxslt-1.1.26-2.el6_3.1.x86_64.rpm | 452 kB 00:00(16/31): mailcap-2.1.31-2.el6.noarch.rpm | 27 kB 00:00(17/31): php-5.5.13-3.el6.remi.x86_64.rpm | 2.6 MB 00:00(18/31): php-cli-5.5.13-3.el6.remi.x86_64.rpm | 2.5 MB 00:00(19/31): php-common-5.5.13-3.el6.remi.x86_64.rpm | 1.0 MB 00:00(20/31): php-fpm-5.5.13-3.el6.remi.x86_64.rpm | 1.3 MB 00:00(21/31): php-gd-5.5.13-3.el6.remi.x86_64.rpm | 69 kB 00:00(22/31): php-mbstring-5.5.13-3.el6.remi.x86_64.rpm | 958 kB 00:00(23/31): php-mcrypt-5.5.13-3.el6.remi.x86_64.rpm | 40 kB 00:00(24/31): php-mysqlnd-5.5.13-3.el6.remi.x86_64.rpm | 261 kB 00:00(25/31): php-pdo-5.5.13-3.el6.remi.x86_64.rpm | 109 kB 00:00(26/31): php-pear-1.9.4-28.el6.remi.noarch.rpm | 373 kB 00:00(27/31): php-pecl-jsonc-1.3.5-1.el6.remi.5.5.x86_64.rpm | 46 kB 00:00(28/31): php-pecl-zip-1.12.4-1.el6.remi.5.5.x86_64.rpm | 269 kB 00:00(29/31): php-process-5.5.13-3.el6.remi.x86_64.rpm | 54 kB 00:00(30/31): php-xml-5.5.13-3.el6.remi.x86_64.rpm | 206 kB 00:00(31/31): t1lib-5.1.2-6.el6_2.1.x86_64.rpm | 160 kB 00:00

--------------------------------------------------------------------------------Total3.6 MB/s | 13 MB 00:03

之后还有一些Is this ok [y/N]:的问题,一律回答y。经过一轮问答和安装,最后完成时的小结为:

Installed:

libjpeg-turbo.x86_64 0:1.2.1-3.el6_5

libjpeg-turbo-devel.x86_64 0:1.2.1-3.el6_5

php.x86_640:5.5.13-3.el6.remi

php-fpm.x86_64 0:5.5.13-3.el6.remi

php-gd.x86_64 0:5.5.13-3.el6.remi

php-mbstring.x86_64 0:5.5.13-3.el6.remi

php-mcrypt.x86_64 0:5.5.13-3.el6.remi

php-mysqlnd.x86_64 0:5.5.13-3.el6.remi

php-pdo.x86_64 0:5.5.13-3.el6.remi

Dependency Installed:

apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1fontconfig.x86_640:2.8.0-3.el6

gd-last.x86_64 0:2.1.0-2.el6.remi

httpd.x86_640:2.2.15-30.el6.centos

httpd-tools.x86_64 0:2.2.15-30.el6.centos

libX11.x86_640:1.5.0-4.el6

libX11-common.noarch 0:1.5.0-4.el6

libXau.x86_640:1.0.6-4.el6

libXpm.x86_640:3.5.10-2.el6

libmcrypt.x86_640:2.5.8-9.el6

libtiff.x86_640:3.9.4-10.el6_5

libxcb.x86_640:1.8.1-1.el6

libxslt.x86_640:1.1.26-2.el6_3.1mailcap.noarch0:2.1.31-2.el6

php-cli.x86_64 0:5.5.13-3.el6.remi

php-common.x86_64 0:5.5.13-3.el6.remi

php-pear.noarch 1:1.9.4-28.el6.remi

php-pecl-jsonc.x86_64 0:1.3.5-1.el6.remi.5.5php-pecl-zip.x86_64 0:1.12.4-1.el6.remi.5.5php-process.x86_64 0:5.5.13-3.el6.remi

php-xml.x86_64 0:5.5.13-3.el6.remi

t1lib.x86_640:5.1.2-6.el6_2.1Replaced:

libjpeg.x86_640:6b-46.el6 libjpeg-devel.x86_64 0:6b-46.el6

Complete!

3.3 配置PHP-FPM的启动

因为使用yum安装,安装过程已经拷贝好了PHP-FPM的服务daemon,只需确保PHP-FPM服务能在系统重启时自动启动就行了:

# chkconfig php-fpm on

查看PHP-FPM服务的自启动状态:

# chkconfig --list php-fpm

php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off

正确。

3.4 停止PHP-FPM 5.4.8

查看PHP-FPM 5.4.8的进程:

# ps aux | grep php-fpm

root2881 0.0 0.1 204172 1972 ? Ss 2013 38:13 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

www19378 0.0 1.4 212764 14736 ? S 10:30 0:14 php-fpm: pool www

www19379 0.0 1.5 213352 15888 ? S 10:32 0:13 php-fpm: pool www

www19657 0.0 1.3 212076 13964 ? S 18:45 0:02 php-fpm: pool www

root20083 0.0 0.0 103236 864 pts/0 S+ 22:40 0:00 grep php-fpm

可见,当前PHP-FPM 5.54.8进程的进程号(pid)是2881,注意其使用的配置文件/usr/local/php/etc/php-fpm.conf位于编译安装PHP的目录,证实了这是PHP-FPM 5.54.8进程。其余进程为其子进程,而grep php-fpm是查看进程这个命令的进程。

中断PHP-FPM 5.54.8进程:

# kill -TERM 2881

再次查看PHP-FPM的进程:

# ps aux | grep php-fpm

root20087 0.0 0.0 103236 864 pts/0 S+ 22:43 0:00 grep php-fpm

已经没有PHP-FPM的进程了,唯一剩下的grep php-fpm是查看进程这个命令的进程。

3.5 启动PHP-FPM 5.5.13

PHP-FPM的配置,我遵照的是参考资料[10],这是一个分级结构的配置文件,多个配置文件各司其职,便于更换配置,启用、停止配置的各模块也更容易。

启动php-fpm服务:

# service php-fpm start

Starting php-fpm: [ OK ]

顺利启动。

再查看其进程:

# ps aux | grep php-fpm

root20099 0.0 0.5 313272 5832 ? Ss 22:44 0:00 php-fpm: master process (/etc/php-fpm.conf)

apache20100 0.4 1.1 317112 11876 ? S 22:44 0:00 php-fpm: pool www

apache20101 0.3 1.5 319936 15316 ? S 22:44 0:00 php-fpm: pool www

apache20102 0.4 1.6 322244 16892 ? S 22:44 0:00 php-fpm: pool www

apache20103 0.4 1.5 320964 15636 ? S 22:44 0:00 php-fpm: pool www

apache20104 0.3 1.3 319648 14256 ? S 22:44 0:00 php-fpm: pool www

apache20106 0.3 1.3 319140 13696 ? S 22:45 0:00 php-fpm: pool www

apache20107 0.1 0.7 313776 8140 ? S 22:46 0:00 php-fpm: pool www

root20109 0.0 0.0 103236 864 pts/0 S+ 22:47 0:00 grep php-fpm

可见其进程号为20099,其余进程为其子进程,而grep php-fpm是查看进程这个命令的进程。

3.6 问题:数据库的图像文件没有显示

原因:PHP-FPM子进程的所有者:组是apache,而不是www。而Nginx是运行在www用户下,故应当改为www。

编辑/etc/php-fpm.d/www.conf:

[www]

;user = apache

user =www;group = apache

group = www

再重启php-fpm服务:

# service php-fpm stop

Stopping php-fpm: [ OK ]

# service php-fpm start

Starting php-fpm: [ OK ]

查看php-fpm进程:

# ps aux | grep php-fpm

root20208 0.0 0.5 313272 5832 ? Ss 23:13 0:00 php-fpm: master process (/etc/php-fpm.conf)

www20209 0.4 1.0 316056 10388 ? S 23:13 0:00 php-fpm: pool www

www20210 0.3 0.9 315020 9280 ? S 23:13 0:00 php-fpm: pool www

www20211 0.4 1.0 316580 10764 ? S 23:13 0:00 php-fpm: pool www

www20212 0.4 1.0 316056 10388 ? S 23:13 0:00 php-fpm: pool www

www20213 0.0 0.4 313272 4872 ? S 23:13 0:00 php-fpm: pool www

www20215 0.0 0.4 313272 4876 ? S 23:13 0:00 php-fpm: pool www

root20217 0.0 0.0 103236 860 pts/0 S+ 23:14 0:00 grep php-fpm

可以看到PHP-FPM进程的进程号是20208,其子进程都以www用户身份运行,而grep php-fpm是查看进程这个命令的进程。

3.7 问题:登录总是失败,并重新返回到登录页面

错误日志为:

2014-06-14 23:14:36 Warning: Warning (2): Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in [Unknown, line 0]

原因:PHP session目录的所有者:组是apache:apache,而不是www:www,与实际进程运行的用户身份不符。

更改PHP session目录的所有者:组为www:www:

# chown -R www:www /var/lib/php/session

从此,王子和公主过着没羞没臊的生活!

A. 参考资料

升级php5.4 mysql5.5_在CentOS上把PHP从5.4升级到5.5相关推荐

  1. 在CentOS上把MySQL从5.5升级到5.6

    在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的 ...

  2. mysql5.7在centos上安装

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:http://blog.csdn.net/you23hai45/article/details/50984328 h ...

  3. centos php 5.2,CentOS服务器单独升级 php5.1 到 5.2版本

    引言:使用CentOS 5.5系统的朋友们都知道,yum默认安装的php版本为php5.1,我们要想使用最新的稳定版本(php5.2.x系列),就必须编译安装. 下面教大家如何使用yum来选择安装自己 ...

  4. linux 升级erlang,【原创】在CentOS 5.7上通过YUM安装Erlang的坑爹经历(更新)

    想要在虚拟机上的 Linux 环境下,重新搞一下 RabbitMQ 的相关实验,所以重新折腾了下如何操作: Since RabbitMQ is written in Erlang, we need t ...

  5. centos 5.8 升级php5.1至5.3

    为什么80%的码农都做不了架构师?>>>    1.先查看当前php版本 #php -v 2.升级php版本 #rpm --import http://repo.webtatic.c ...

  6. centos mysql 5.6.36_CentOS 6.9 升级MySQL 5.6.36到5.7.18

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  7. xp php mysql_Win XP下全新安装Apache2,PHP5,MYSQL5

    看PHP,MYSQL,都出了新版本,想尝尝鲜,就试着安装了一下,然后把安装过程记了下来,希望能对学习PHP的新手有些帮助,斑竹可以考虑精一下了 WindowsXP下全新安装Apache2,PHP5,M ...

  8. CentOS上PHP源码安装和配置

    CentOS上PHP源码安装和配置 此文是在CentOS 7上已经部署了Nginx的基础上进行的 关于CentOS7上安装Nginx,可参考我之前的文章: CentOS上Nginx安装记录 我们现在在 ...

  9. 如何在Ubuntu/CentOS上安装Linux内核4.0

    如何在Ubuntu/CentOS上安装Linux内核4.0 大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为'Hurr durr I'm a sheep'的 ...

最新文章

  1. EOS安全漏洞再发,BCH将如何兼顾智能合约效率与安全?
  2. IOS开发笔记(Swift):UITableView表格视图的静态使用
  3. java面试题001
  4. SQL Server 2005 SP2发布了,开发人员怎么办?
  5. Leetcode:0002(两数之和)
  6. win7锁定计算机会断网吗,win7系统如何设置电脑定时断网
  7. phpunit+selenium环境搭建
  8. 关联规则java apriori_关联规则算法(The Apriori algorithm)详解
  9. oracle中trim,ltrim,rtrim函数用法
  10. VS2013 VS2015应用程序无法正常启动0xc000007b。
  11. 回炉重造--PHP编程速成
  12. 关于无法安装.NET Framework3.5的问题(0x800F081F)
  13. QGIS:让数据随时间动起来
  14. 如何写一封稍微像样的求职邮件
  15. linux取消上一个命令,Linux简介及最常用命令(简单易学,但能解决95%以上的问题)...
  16. [ 数据结构 - C++] AVL树原理及实现
  17. 数学中的伟大定理:海伦公式的推导过程
  18. python之自动发送微信消息
  19. 怎么把几张图片做成一张动图?
  20. 1. 一些截图方法和另存格式的比较(QQ,微信,企业微信,飞书,word,PPT,edge,PrintScreen;svg等);2. 将截图直接转换为PDF并拼接,与插入Word后再转换为PDF的对比

热门文章

  1. 计算机音乐刚好遇见你乐谱,刚好遇见你钢琴谱-李玉刚|因为我刚好遇见你
  2. 【英语学习】【WOTD】emote 释义/词源/示例
  3. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (9) - 流水线前端/微指令队列循环流侦测器LSD
  4. 扫地机器人水箱背景_你真的懂扫地机器人吗?这些不为人知的小细节值得一看...
  5. python库的安装方法_Python库的安装方法
  6. 回答一下这些游戏帧数有关的问题吗?
  7. 正则表达式的使用,python正则匹配一个话题标签
  8. 单例设计模式 (2)
  9. I/O多路复用——Reactor模式
  10. 第二十三篇:在SOUI中使用LUA脚本开发界面