【PHP教程(三)】PHP包管理、Markdown库和Excel解析库

1. 指定版本php的安装和卸载

2. php的包管理

3. php包管理工具Composer安装

4. Composer安装Markdown库

5. Composer安装PhpOffice库

6. php和python的一些区别

1.指定版本php的安装和卸载

Remi 存储库是一个第三方的软件源,它提供了一系列针对 CentOS、Red Hat Enterprise Linux(RHEL)和 Fedora 等系统的软件包。Remi 存储库的目的是提供最新版本的各种软件包,包括 PHP、MySQL、Redis、Nginx 等。

对于 PHP 开发者来说,Remi 存储库是一个非常有用的资源,因为它提供了最新版本的 PHP 和许多常用的 PHP 扩展和工具。使用 Remi 存储库,您可以轻松地升级到最新版本的 PHP,而无需手动编译和安装。此外,Remi 存储库还提供了不同版本的 PHP,您可以选择与您的应用程序兼容的版本进行安装。

 1. 安装 EPEL 存储库。这个存储库包含了 PHP 8.0 所需的依赖项:

dnf install epel-release

2. 安装 Remi 存储库。这个存储库包含了 PHP 8.0 的安装包:

dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

3. 安装 yum-utils 工具:

dnf install yum-utils

4. 启用 PHP 8.0 模块:

dnf module enable php:remi-8.0

以下命令列出 Remi 存储库中可用的 PHP 版本,选择相应版本使用上述命令进行安装即可

dnf module list php

 5. 更新 yum 缓存

dnf update

6. 安装 PHP 8.0

dnf install php

7. 验证PHP 8.0的安装

php -v

8. 如果需要,您还可以安装其他的 PHP 扩展模块,例如:

dnf install php-mysqlnd
dnf install php-gd
dnf install php-xml

对于 CentOS/RHEL 8,可以使用以下命令将其卸载

dnf remove php

9. php环境变量配置参考

【Nginx和PHP教程(一)】安装、配置及初步使用_安装nginx和php_Almond_02的博客-CSDN博客

2.php的包管理

以下是您列出的已安装的 PHP 包的功能简介:

  1. php.x86_64:PHP 编程语言的核心包,包含 PHP 语言的运行时环境和基本功能。

  2. php-cli.x86_64:PHP 命令行工具包,提供在命令行下运行 PHP 脚本的功能。

  3. php-common.x86_64:PHP 公共文件包,包含 PHP 编程语言的共享库和共享配置文件。

  4. php-fpm.x86_64:PHP-FPM(FastCGI Process Manager)包,是一种运行 PHP 脚本的进程管理器,通常用于运行 PHP 的 Web 服务器。

  5. php-gd.x86_64:PHP GD 图形库扩展包,提供在 PHP 中处理图像的功能,如创建、处理和输出图像。

  6. php-mbstring.x86_64:PHP 多字节字符串处理扩展包,提供对多字节编码的字符串操作支持,如中文、日文、韩文等。

  7. php-mysqlnd.x86_64:PHP MySQL 客户端扩展包,提供 PHP 连接和操作 MySQL 数据库的功能。

  8. php-pdo.x86_64:PHP PDO(PHP Data Objects)扩展包,提供了一种数据库抽象层,允许在 PHP 中使用统一的 API 进行数据库操作,支持多种数据库管理系统。

可以使用以下命令检查您的PHP扩展程序是否已安装:

php -m

PHP有很多重要的包和模块,下面列举了一些常用的:

  1. Composer:PHP的包管理工具,用于管理和安装PHP库和依赖。

  2. PHPUnit:PHP的测试框架,用于编写单元测试和集成测试。

  3. Laravel框架:一个流行的PHP Web框架,提供了许多便捷的功能和工具,如路由、ORM、队列等。

  4. CodeIgniter框架:一个轻量级的PHP Web框架,适用于小型Web应用程序。

  5. Symfony框架:一个高性能、模块化的PHP Web框架,提供了许多标准化的组件和功能。

  6. Guzzle:一个HTTP客户端库,用于发送HTTP请求和处理HTTP响应。

  7. Twig:一个流行的PHP模板引擎,用于生成HTML页面。

  8. SwiftMailer:一个流行的PHP邮件发送库,用于发送邮件。

  9. Monolog:一个PHP日志库,用于记录和管理应用程序的日志信息。

  10. PHPCS和PHPMD:两个用于代码规范和静态代码分析的工具,可以帮助开发人员提高代码质量和可维护性。

3.php包管理工具Composer安装

Composer是一种用于PHP依赖管理的工具。它允许您在您的PHP项目中定义和安装依赖项,并确保这些依赖项与您的项目兼容。

要检查CentOS系统上是否已安装Composer,您可以打开终端并运行以下命令:

composer -v

如果您看到类似于以下内容的输出,则表示Composer已安装并显示其版本号:

Composer version 2.1.5 2021-07-01 19:49:16

如果您看到“命令未找到”或类似的错误消息,则表示Composer未安装或未添加到系统路径中。在这种情况下,您需要先安装Composer。

要在CentOS上安装Composer,请按照以下步骤操作:

1.在终端中运行以下命令,以获取最新版本的Composer安装脚本:

curl -sS https://getcomposer.org/installer | php

2.将生成的composer.phar文件移动到/usr/local/bin/目录下,以使其全局可用:

sudo mv composer.phar /usr/local/bin/composer

3.最后,运行以下命令以确保Composer已正确安装:

composer -v

如果您看到类似于上述示例的输出,则表示Composer已正确安装并显示其版本号。

4.查看当前目录下安装的所有包及其版本号,执行该命令需要在包含composer.json文件的目录中运行。

composer show

4.Composer安装Markdown库

1.在终端中,使用以下命令进入PHP脚本所在的目录

cd /home/01_html/

 2.运行以下命令,使用Composer安装Markdown库

composer require cebe/markdown

这将安装cebe/markdown库及其所有依赖项,并生成vendor目录。

确保您的PHP脚本中已正确引入autoload.php文件。例如,如果您的PHP脚本位于/home/01_html/markdown.php文件中,则应在脚本的顶部添加以下代码:

require_once __DIR__ . '/vendor/autoload.php';

这将加载Composer生成的autoload.php文件,并使您的脚本能够使用Markdown库中的类和方法。

除此之外,流行的 PHP Markdown 解析器有以下几个:

  1. Parsedown:速度快,易于使用,支持 GitHub 风格的 Markdown,PHP 5.3 及以上版本支持。

  2. Markdown Extra:John Gruber 所著的原始 Markdown 语法的扩展,支持在文本中嵌入 HTML 标签、表格、脚注等功能。

  3. CommonMark:由 John MacFarlane 创建的通用 Markdown 规范的 PHP 实现,支持 Markdown 规范的所有功能。

  4. PHP Markdown:原始的 PHP Markdown 解析器,支持 Markdown 的所有基本功能。

  5. Hoedown:速度快,支持 Github 风格的 Markdown,C 语言实现,可以通过 PHP 扩展使用。

3. 重新启动您的Web服务器以使更改生效:

sudo systemctl restart nginx

现在应该能够正常运行您的PHP脚本并正确地显示Markdown内容。

 4. 测试脚本:以html的形式显示同级目录下test.md的内容

<?php
require_once __DIR__ . '/vendor/autoload.php';

$markdown = file_get_contents('test.md');
$parsedown = new cebe\markdown\Markdown();
$html = $parsedown->parse($markdown);

echo "<div style='width: 50%; margin: 0 auto; text-align: left; border: 1px solid #ddd; padding: 40px;'>$html</div>";
?>

上面这个PHP脚本会解析test.md文件中的Markdown文本,并使用cebe/markdown库将其转换为HTML格式。然后它会将HTML格式的文本包含在<div>标签中,并设置样式,最后在浏览器中显示。

需要确保在同级目录下有test.md文件,并且已经使用Composer安装了cebe/markdown库。另外,这个脚本也需要在支持PHP的Web服务器上运行。

注意某些版本的php可能默认无法正常显示中文字符,这时需要需要在 PHP 配置文件(etc/php.ini)中设置字符编码

default_charset = "UTF-8"

修改php.ini文件后,如何重启php-fpm

sudo service php-fpm restart

PHP-FPM是PHP FastCGI进程管理器(PHP FastCGI Process Manager)的缩写,它是一个为PHP解释器提供高性能、低延迟的进程管理器,用于处理PHP的FastCGI请求。它不是PHP的扩展或包,而是作为PHP解释器的一个独立程序运行。PHP-FPM的主要作用是控制PHP进程的生命周期,包括启动、重启、停止、调度等,并提供了高级的进程管理策略,可以根据请求的负载自动调整进程数,从而实现更高效的资源利用和更好的性能表现。

5. 为了正确显示表格和代码块,需要 league/commonmark 

首先,确保您的系统上已安装PHP和Composer。如果未安装,请按照上述步骤安装它们。

安装league/commonmark库:

# 切换到您的项目目录
cd /path/to/your/project

# 使用 Composer 安装库
composer require league/commonmark

在您的 PHP 代码中使用league/commonmark库:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use League\CommonMark\CommonMarkConverter;

$markdown = file_get_contents('test.md');
$converter = new CommonMarkConverter();
$html = $converter->convertToHtml($markdown);

echo "<div style='width: 50%; margin: 0 auto; text-align: left; border: 1px solid #ddd; padding: 40px;'>$html</div>";
?>

在上面的示例中,我们使用use关键字导入了League\CommonMark\CommonMarkConverter类,并使用它将Markdown转换为HTML。

6. 安装 Parsedown

在终端中输入以下命令来安装 Parsedown:

composer require erusev/parsedown

这将安装 Parsedown 库及其依赖项。

在 PHP 中使用 Parsedown:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use Parsedown;

$markdown = file_get_contents('test.md');
$parsedown = new Parsedown();
$html = $parsedown->text($markdown);

echo "<div style='width: 50%; margin: 0 auto; text-align: left; border: 1px solid #ddd; padding: 40px;'>
    <style>table { border-collapse: collapse; border-spacing: 0; }</style>
    <style>table, th, td { border: 1px solid black; }</style>
    $html
</div>";

?>

5. Composer安装PhpOffice库

PhpOffice是一个用于处理Microsoft Office文件的PHP库。它提供了一套丰富的功能,可以让开发人员在PHP应用程序中轻松地读取、写入和操作Microsoft Office文件,如Word文档、Excel电子表格和PowerPoint演示文稿。

PhpOffice库包含了多个子库,每个子库专门用于处理不同类型的Office文件,包括:

  1. PhpWord:用于读取、写入和操作Word文档的库,支持创建、编辑和格式化文本、段落、表格、图像、列表、页眉和页脚等Word文档元素。

  2. PhpSpreadsheet:用于读取、写入和操作Excel电子表格的库,支持Excel文件的创建、编辑、格式化、数据导入导出、图表生成等功能。

  3. PhpPresentation:用于读取、写入和操作PowerPoint演示文稿的库,支持创建幻灯片、幻灯片布局、文本框、图像、形状、图表等PowerPoint演示文稿元素。

这些子库都是独立的,可以单独使用,也可以组合在一起,根据需要在PHP应用程序中处理不同类型的Office文件。PhpOffice库具有广泛的应用场景,例如生成报表、导入导出数据、生成合同和文档等,是PHP开发人员在处理Microsoft Office文件时的重要工具。

尝试使用 composer require phpoffice/phpspreadsheet 安装 PhpOffice/PhpSpreadsheet 的最新版本。PHPOffice库对PHP版本有要求。根据官方文档,PHPExcel和PhpSpreadsheet都要求使用PHP 7.2或更高版本

PhpOffice/PhpSpreadsheet 要求 ext-gdext-zip 扩展。

1. 安装 ext-gd 扩展:

sudo yum install php-gd

2. 安装 ext-zip 扩展:

sudo yum install php-zip

安装完扩展之后,您需要重启 PHP-FPM 和 Nginx 服务以使更改生效:

sudo systemctl restart php-fpm
sudo systemctl restart nginx

3. 进入到项目文件夹进行 phpoffice/phpspreadsheet 安装

cd /var/www/html
sudo composer require phpoffice/phpspreadsheet

4. php脚本读取excel测试

在 PHP 脚本中手动加载 Composer 自动加载器

require __DIR__ . '/vendor/autoload.php';

下面这段代码是一个 PHP 脚本,用于读取一个 Excel 文件并将其内容显示在网页上。具体来说,它使用了 PhpOffice\PhpSpreadsheet 库来读取 Excel 文件,然后使用 HTML 表格将其内容显示出来。最后,它还会打印出 Excel 文件的最后修改时间。

excel.php

<?php
require __DIR__ . '/vendor/autoload.php';

// 读取Excel文件
$inputFileName = __DIR__ . '/example.xlsx';
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
$spreadsheet = $reader->load($inputFileName);

// 显示Excel数据
echo '<div style="margin: 50px auto 0; width: 80%; text-align: center;"><h1>美团和携程房间预订数量</h1></div>';
echo '<div style="margin: 0 auto; width: 80%;">';
echo '<table style="border: 1px solid gray; border-collapse: collapse; text-align: center;">';
foreach ($spreadsheet->getActiveSheet()->getRowIterator() as $row) {
    echo '<tr>';
    foreach ($row->getCellIterator() as $cell) {
        echo '<td style="border: 1px solid gray; padding: 5px;">' . $cell->getValue() . '</td>';
    }
    echo '</tr>';
}
echo '</table>';

// 打印文件最后修改时间
$lastModified = filemtime($inputFileName);
$lastModifiedTimezone = new DateTimeZone('Asia/Shanghai');
$lastModifiedDateTime = new DateTime('@' . $lastModified);
$lastModifiedDateTime->setTimezone($lastModifiedTimezone);
echo '<div style="margin-top: 20px; text-align: center;">';
echo '文件最后修改时间:' . $lastModifiedDateTime->format('Y-m-d H:i') . ' (中国标准时间)';
echo '</div>';

echo '</div>';
?>

excel.php

<?php
require __DIR__ . '/vendor/autoload.php';

// 读取Excel文件
$inputFileName = __DIR__ . '/example.xlsx';
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
$spreadsheet = $reader->load($inputFileName);

// 显示Excel数据
echo '<!DOCTYPE html>';
echo '<html>';
echo '<head>';
echo '<meta charset="UTF-8">';
echo '<title>美团和携程房间预订数量</title>';
echo '<style>';
echo 'td:nth-child(2), td:nth-child(3), td:nth-child(6), td:nth-child(7) { background-color: #f2f2f2; }';
echo 'td:nth-child(4), td:nth-child(5), td:nth-child(8), td:nth-child(9) { background-color: #eafed2; }';
echo '</style>';
echo '</head>';
echo '<body>';
echo '<div style="margin: 50px auto 0; width: 85%; text-align: center;"><h1>美团和携程房间预订数量</h1></div>';
echo '<div style="margin: 0 auto; width: 85%;">';
echo '<table style="border: 1px solid gray; border-collapse: collapse; text-align: center;">';
foreach ($spreadsheet->getActiveSheet()->getRowIterator() as $row) {
    echo '<tr>';
    foreach ($row->getCellIterator() as $cell) {
        echo '<td style="border: 1px solid gray; padding: 5px;">' . $cell->getValue() . '</td>';
    }
    echo '</tr>';
}
echo '</table>';

// 打印文件最后修改时间
$lastModified = filemtime($inputFileName);
$lastModifiedTimezone = new DateTimeZone('Asia/Shanghai');
$lastModifiedDateTime = new DateTime('@' . $lastModified);
$lastModifiedDateTime->setTimezone($lastModifiedTimezone);
echo '<div style="margin-top: 20px; text-align: center;">';
echo '房间预订统计时间:' . $lastModifiedDateTime->format('Y-m-d H:i') . ' (中国标准时间)';
echo '</div>';

echo '</div>';
echo '</body>';
echo '</html>';
?>

上面这段代码是一个 PHP 脚本,用于读取一个 Excel 文件并将其内容以 HTML 表格的形式展示出来。具体实现过程如下:

1. 首先,通过 require 函数引入了一个名为 autoload.php 的文件,该文件可能是一个自动加载器,用于自动加载 PHP 类文件。


2. 然后,定义了一个变量 $inputFileName,用于存储 Excel 文件的路径。


3. 接着,使用 PhpOffice\PhpSpreadsheet\IOFactory 类的 createReader 方法创建了一个读取器对象 $reader,并使用该对象的 load 方法读取了 Excel 文件,将其内容存储在 $spreadsheet 变量中。


4. 然后,使用 echo 函数输出了一些 HTML 代码,包括一个标题、一个样式表和一个表格。


5. 接着,使用 foreach 循环遍历了 Excel 文件中的每一行和每一个单元格,并将其内容输出到 HTML 表格中。


6. 然后,使用 filemtime 函数获取了 Excel 文件的最后修改时间,并使用 DateTime 类将其转换为中国标准时间格式,最后将其输出到 HTML 页面中。


总的来说,这段代码的作用是将一个 Excel 文件的内容以 HTML 表格的形式展示出来,并显示该文件的最后修改时间。

6.php和python的一些区别

Both PHP and Python are popular programming languages, each with its own strengths and weaknesses. Here are some key differences between the two:

Syntax:

  • PHP has a syntax that is similar to C and Java, which makes it easy for programmers with experience in those languages to pick up. On the other hand, Python has a clean and simple syntax that emphasizes readability and ease of use.

Use Cases:

  • PHP is primarily used for server-side web development, while Python is used for a wide range of tasks, including web development, scientific computing, data analysis, artificial intelligence, and more.

Performance:

  • PHP is a relatively fast language for server-side web development, but it is not as fast as some other programming languages, such as C++ or Java. Python, on the other hand, is generally slower than PHP, but its simplicity and ease of use make it a popular choice for many tasks.

Dynamic vs. Static Typing:

  • PHP is a dynamically typed language, which means that variables do not need to be declared with a specific type. Python, on the other hand, is a statically typed language, which means that variables must be declared with a specific type.

Built-in Libraries:

  • Python has a large standard library, which makes it easy to perform many tasks without having to install additional packages. PHP has a smaller standard library, but it has many extensions and libraries that can be used to add additional functionality.

Overall, the choice between PHP and Python will depend on your specific needs and the task you are trying to accomplish. If you are primarily focused on server-side web development, then PHP might be the better choice, but if you are looking for a more general-purpose programming language, then Python might be a better option.

要掌握PHP,需要学习以下知识和技能:

  1. PHP基础语法和面向对象编程:掌握PHP基础语法和变量、数组、循环、条件语句等基本概念,以及面向对象编程的概念和实践。

  2. 数据库和SQL:了解数据库的基本概念和使用方法,熟悉SQL语言的基础知识,能够使用PHP连接和操作数据库。

  3. Web开发技术:掌握HTML、CSS、JavaScript等Web开发技术,熟悉HTTP协议和常用的Web开发框架,如Laravel、CodeIgniter等。

  4. 文件操作和IO编程:掌握文件的读写、上传和下载等操作,了解IO编程的基本概念和实践。

  5. 安全性和性能优化:熟悉PHP的安全问题和常见的攻击方式,掌握如何防范和处理安全漏洞,以及如何进行性能优化,提升PHP应用的性能和效率。

  6. 常用的开发工具和技术:熟悉常用的开发工具和技术,如版本控制工具Git、调试工具Xdebug、包管理工具Composer等。

  7. 编程实践和项目经验:通过实际的编程实践和参与项目经验,加深对PHP的理解和掌握,提高开发能力和技能水平。

参考资料: