PHP常用扩展推荐以及1Panel面板安装PHP环境和扩展的方法

介绍

PHP是一种广泛使用的服务器端脚本语言,具有丰富的扩展库,可以帮助开发人员简化开发过程并增强应用程序的功能。本文将详细介绍一些常用的PHP扩展,并提供使用1Panel面板安装和配置这些扩展的方法。

如果你想直接跳转到1panel安装扩展可以点击 1Panel面板安装PHP和常见扩展

常用的PHP扩展

以下是一些常用的PHP扩展,它们提供了各种功能和工具,可以用于开发各种类型的应用程序。

1. bcmath

介绍: bcmath扩展提供了对任意精度数学运算的支持,适用于处理大数值计算的场景。

示例: 计算两个大数的和

$number1 = '12345678901234567890';
$number2 = '98765432109876543210';

$result = bcadd($number1, $number2);
echo $result;  // 输出:111111111011111111100

2. gd

介绍: gd扩展用于图像处理和生成,可以创建、编辑和操作图像,例如生成缩略图、添加水印等。

示例: 生成缩略图

$sourceImage = 'path/to/source.jpg';
$thumbnailImage = 'path/to/thumbnail.jpg';

$source = imagecreatefromjpeg($sourceImage);
$thumbnail = imagescale($source, 100, 100);

imagejpeg($thumbnail, $thumbnailImage);
imagedestroy($source);
imagedestroy($thumbnail);

3. gettext

介绍: gettext扩展用于国际化和本地化,提供了多语言支持和文本翻译的功能。

示例: 设置和获取翻译文本

$locale = 'en_US';
$domain = 'messages';

setlocale(LC_ALL, $locale);
bindtextdomain($domain, 'path/to/locale');
textdomain($domain);

echo gettext('Hello, World!');  // 输出:你好,世界!

4. intl

介绍: intl扩展提供了国际化和本地化的功能,包括字符编码转换、日期和时间处理、货币格式化等。

示例: 转换字符编码

$text = '你好,世界!';
$fromEncoding = 'UTF-8';
$toEncoding = 'GBK';

$convertedText = iconv($fromEncoding, $toEncoding, $text);
echo $convertedText;  // 输出:鍟婂晩锛堝瓧锛�

5. pcntl

介绍: pcntl扩展用于进程控制,可以创建和管理子进程,进行进程间通信和信号处理。

示例: 创建子进程并等待子进程退出

$pid = pcntl_fork();

if ($pid == -1) {
    die('无法创建子进程');
} elseif ($pid) {
    // 父进程代码
    pcntl_wait($status);
} else {
    // 子进程代码
    echo '子进程';
    exit();
}

6. shmop

介绍: shmop扩展用于共享内存操作,可以在进程间共享数据,适用于高性能和并发的应用程序。

示例: 创建共享内存段并写入数据

$key = ftok(__FILE__, 't');
$size = 1024;
$permissions = 0666;

$shmid = shmop_open($key, 'c', $permissions, $size);
if (!$shmid) {
    die('无法创建共享内存段');
}

$data = 'Hello, shared memory!';
$offset = 0;

shmop_write($shmid, $data, $offset);
shmop_close($shmid);

7. soap

介绍: soap扩展用于Web服务,可以创建和访问SOAP协议的Web服务。

示例: 创建SOAP客户端并调用Web服务方法

$wsdl = 'http://example.com/service.wsdl';
$options = array('trace' => true);

$client = new SoapClient($wsdl, $options);
$result = $client->SomeMethod($param1, $param2);

var_dump($result);

8. sockets

介绍: sockets扩展提供了对网络套接字的支持,可以进行网络通信,例如创建TCP/IP连接、发送和接收数据等。

示例: 创建TCP/IP连接并发送数据

$host = 'example.com';
$port = 80;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $host, $port);

$request = "GET / HTTP/1.1\r\nHost: $host\r\n\r\n";
socket_write($socket, $request, strlen($request));

$response = socket_read($socket, 4096);
echo $response;

socket_close($socket);

9. sysvsem

介绍: sysvsem扩展用于System V信号量,可以进行进程间同步和互斥操作。

示例: 创建信号量并进行加锁和解锁操作

$key = ftok(__FILE__, 't');
$permissions = 0666;

$semaphore = sem_get($key, 1, $permissions);
sem_acquire($semaphore);

// 临界区代码

sem_release($semaphore);
sem_remove($semaphore);

10. xmlrpc

介绍: xmlrpc扩展用于XML-RPC协议,可以创建和访问XML-RPC服务。

示例: 调用XML-RPC服务方法

$server = 'http://example.com/xmlrpc';
$method = 'exampleMethod';
$parameters = array('param1', 'param2');

$client = xmlrpc_client($server);
$request = xmlrpc_encode_request($method, $parameters);
$response = xmlrpc_decode($client->send($request));

var_dump($response);

11. zip

介绍: zip扩展用于ZIP文件处理,可以创建、读取和解压ZIP文件。

示例: 创建ZIP文件并添加文件

$zipFile = 'path/to/archive.zip';
$files = array('file1.txt', 'file2.txt');

$zip = new ZipArchive();
if ($zip->open($zipFile, ZipArchive::CREATE) === true) {
    foreach ($files as $file) {
        $zip->addFile($file);
    }

    $zip->close();
}

12. mysqli

介绍: mysqli扩展提供了对MySQL数据库的增强支持,包括事务处理、预处理语句等。

示例: 查询数据库并输出结果

$host = 'localhost';
$username = 'root';
$password = 'password';
$database = 'mydb';

$mysqli = new mysqli($host, $username, $password, $database);
if ($mysqli->connect_errno) {
    die('数据库连接失败');
}

$query = 'SELECT * FROM users';
$result = $mysqli->query($query);

while ($row = $result->fetch_assoc()) {
    echo $row['username'] . '<br>';
}

$result->free();
$mysqli->close();

13. pdo_mysql

介绍: pdo_mysql扩展提供了对MySQL数据库的支持,使用PHP的PDO(PHP Data Objects)接口。

示例: 查询数据库并输出结果

$dsn = 'mysql:host=localhost;dbname=mydb';
$username = 'root';
$password = 'password';

$pdo = new PDO($dsn, $username, $password);
$query = 'SELECT * FROM users';
$result = $pdo->query($query);

while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    echo $row['username'] . '<br>';
}

$result->closeCursor();
$pdo = null;

14. redis

介绍: redis扩展提供了对Redis数据库的支持,可以进行高性能的缓存和数据存储。

示例: 连接Redis服务器并存储数据

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$key = 'mykey';
$value = 'myvalue';

$redis->set($key, $value);
echo $redis->get($key);

$redis->close();

15. curl

介绍: curl扩展用于进行网络请求和数据传输,支持各种协议和功能,例如HTTP、FTP、SSL等。

示例: 发送HTTP请求并获取响应

$ch = curl_init();
$url = 'http://example.com/api';
$data = array('param1' => 'value1', 'param2' => 'value2');

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

16. mbstring

介绍: mbstring扩展提供了对多字节字符串的支持,包括字符编码转换、字符串处理等。

示例: 转换字符串编码

$text = '你好,世界!';
$fromEncoding = 'UTF-8';
$toEncoding = 'GBK';

$convertedText = mb_convert_encoding($text, $toEncoding, $fromEncoding);
echo $convertedText;  // 输出:鍟婂晩锛堝瓧锛�

17. xml

介绍: xml扩展用于XML文档处理,可以解析和生成XML文档。

示例: 解析XML文档并提取数据

$xmlString = '<root><name>John Doe</name><age>30</age></root>';
$xml = simplexml_load_string($xmlString);

$name = $xml->name;
$age = $xml->age;

echo $name . ', ' . $age;  // 输出:John Doe, 30

18. json

介绍: json扩展提供了对JSON数据的支持,可以进行JSON数据的编码和解码。

示例: 编码和解码JSON数据

$data = array('name' => 'John Doe', 'age' => 30);

$json = json_encode($data);
echo $json;  // 输出:{"name":"John Doe","age":30}

$decodedData = json_decode($json, true);
echo $decodedData['name'];  // 输出:John Doe

19. iconv

介绍: iconv扩展用于字符编码转换,支持各种字符编码之间的转换。

示例: 转换字符编码

$text = '你好,世界!';
$fromEncoding = 'UTF-8';
$toEncoding = 'GBK';

$convertedText = iconv($fromEncoding, $toEncoding, $text);
echo $convertedText;

1Panel面板安装PHP和常见扩展

  1. 我们需要先创建一个PHP扩展模板 方便复用

Clip_2024-04-23_17-15-53.png

Clip_2024-04-23_17-17-20-dq5g.png

  1. 填入上面介绍的常见扩展,也可以添加你自己需要的扩展,一般需要特殊扩展的应用都会有介绍。 可以直接复制我下面的扩展。 这里需要注意 不同的PHP版本的扩展可能会不同。 可以点击此处查看对应版本和扩展介绍 查看扩展列表
bcmath,gd,gettext,intl,pcntl,shmop,soap,sockets,sysvsem,xmlrpc,zip,mysqli,pdo_mysql,redis,curl,mbstring,xml,json,iconv

Clip_2024-04-23_17-17-20.png

  1. 创建运行环境。 根据需要输入。然后选择我们刚刚创建的扩展模板。点击确认即可。

Clip_2024-04-23_17-22-20.png

  1. 创建PHP应用。进入网站界面 点击创建网站。选择运行环境,使用我们刚刚创建的运行环境即可。 运行环境是可以复用的。

Clip_2024-04-23_17-24-00.png

新手可能会问,这是我网站的访问端口吗?我是需要反向代理这个端口吗?

都不是,这是web服务器与PHP通信用的端口,宝塔默认使用套接字连接,所以你压根看不到这个设置,而1Panel使用TCP连接,所以需要这个端口来让PHP与web服务器进行通信
本段来自于 创建网站时为什么要填写PHP-FPM端口