当前位置:首页 > 包含标签 PHP 的所有文章
宝塔BT安装PHP 8.2扩展插件

问题描述

宝塔BT(版本7.9.9)安装了PHP 8.2.4后,发现只有有限的几个扩展插件(目前为止6个),但是我这边需要imagick、imagemagick和swoole扩展


解决方法1:手动安装

1、进入到目录 /www/server/panel/install ,找到exif.sh、imagemagick.sh和swoole4.sh (如果找不到,在低版本PHP81安装下该扩展即可),并增加以下代码。

本文主要介绍关于PHP目前比较常见的五大运行模式:CGI,FAST-CGI,CLI,Web模块模式(mod_php),ISAPI。


1、CGI(通用网关接口/ Common Gateway Interface)

通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。CGI方式在遇到连接请求(用户请求)先要创建cgi的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内 存,CPU时间等,造成效能低下。

bin2hex()函数

bin2hex()函数把ASCII字符的字符串转换为十六进制值。

语法:bin2hex(string)

string 必需。要转换的字符串。

例子:bin2hex("Hello world!"); \\输出48656c6c6f20776f726c6421


pack()函数

pack() 函数把数据装入一个二进制字符串。

语法:pack(format,args+)

format 必需。规定在包装数据时所使用的格式。

args+ 可选。规定被包装的一个或多个参数。

例子:pack("H*","48656c6c6f20776f726c6421"); \\输出Hello world!


实例展示

1、把图片test.jpg转换为十六进制形式字符串

$data = file_get_contents("test.jpg");

$result = bin2hex($data);


2、把十六进制形式字符串转为一个二进制字符串

$data = pack("H*",$result);

在PHP编程过程中经常要取多个不重复的随机数。随机一个数可以用随机函数rand(),但是现在假如要在1-20中取5个不重复的数字,使用rand(1,20)只可以取一个数字,取5个不重复的随机数就比较麻烦了。比较简单的方法是用数组来取这5个随机数。下面这几种方法多是用数组来实现的。


方法一

首先创建一个有1-20元素的数组,对数组进行随机排序,取数组前5个元素。

date(format,timestamp) 函数可把时间戳格式化为可读性更好的日期和时间。。

format:必需。规定时间戳的格式。

timestamp:可选。规定时间戳。默认是当前的日期和时间。


strtotime(time,now) 函数将任何英文文本的日期时间描述解析为Unix时间戳。

time:必需。规定日期/时间字符串。

PHP7之后实现AEES加解密功能换成了openssl扩展,PHP之间的加解密相对来说变的简单了,但是对于要和JAVA等其他语言对接的时候就要非常注意了。


openssl_encrypt介绍

openssl_encrypt( string $data, string $method, string $key, int $options = 0, string $iv = "", string &$tag = null, string $aad = "", int $tag_length = 16 ): string|false

参数说明:

PHP使用MIME base64(内置函数base64_encode)对数据进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输。

本文主要介绍使用Base64对图片进行编码。


图片转换为base64编码

读取图片到字符串,而后使用base64_encode进行进行编码然后拼接上前缀(data:image/png;base64,)即可。