
正如任何一个开发者可以证明的那样,代码在初稿之后永远不可能为生产做好准备。开发过程中的一个关键部分是调试–删除或改变代码中所有不工作的部分。
PHP的Xdebug扩展是一种流行的方法,可以根除并摧毁你代码中的所有bug。
Xdebug的一个伟大方面是它的灵活性。无论你喜欢哪种框架或开发环境,你都能找到适合你工作流程的Xdebug版本。从这里开始,掌握这个工具不会花很长时间。
本教程将深入研究Xdebug,包括安装过程、将其集成到你的设置中,以及一般使用方法。
首先,让我们给你更多关于Xdebug是什么和它做什么的背景。
Xdebug介绍
Xdebug是最流行的调试PHP代码的扩展之一。你将在你选择的环境中安装它,它充当一个 “步骤调试器”。

Xdebug logo
简而言之,这使你能够逐行处理你的代码,这样你就可以逐步查看代码在你的程序中是如何行动和互动的,以及调查其输出。从那里,你可以根据你的需要进行修改。
不过,Xdebug可以做得更多。
- 你可以使用一套指标和可视化的方法来分析你的代码的性能。
- 当你运行PHP单元测试时,你可以看到你运行和执行的代码套件。
- Xdebug包括 “跟踪 “功能,它将把每个函数的调用写到磁盘上。这将包括参数、变量赋值和返回值。
- Xdebug还对标准的PHP错误报告做了改进。我们将在后面介绍更多这方面的内容。
鉴于这些特性,有很多方法可以在你的工作流程中使用Xdebug(以及任何类似的调试器)。我们将在下一节中介绍这些。
为什么要使用Xdebug?
许多开发者不会有一个专门的调试工作流程,使用第三方工具和扩展。这是因为 PHP 包含了它自己的基本错误记录。你会使用as error_log, var_dump和print等命令来查看变量和函数调用的结果。
例如,有很多片段你可以重新用于WordPress的开发–Stack Overflow上有很多这样的片段。
if ( WP_DEBUG === true ) {
if ( is_array($message) || is_object($message) ) {
error_log( print_r($message, true) );
} else {
error_log( $message );
}
}
}
function log_me($message) {
if ( WP_DEBUG === true ) {
if ( is_array($message) || is_object($message) ) {
error_log( print_r($message, true) );
} else {
error_log( $message );
}
}
}
然而,这种方法也有一些重要的缺点。
- 你首先必须确保你为你所使用的平台启用错误日志。在这种情况下,你要启用
WP_DEBUG(稍后会有更多介绍)。 - 这个 “转储 “调试的例子比步骤调试提供的调查范围要小。在这里,你只能输出你定义的东西。
后一点需要很多手工操作,尤其是当你的日常工作不是系统管理员的时候。例如,如果你想调试一个代码块,你可能会根据你定义的一个变量来添加你的代码段。然而,它可能不是问题的根源,甚至不能说明正在发生什么。
相反,像Xdebug这样的工具可以发挥其魔力,提供更大的范围。
- 你可以在执行过程中的不同点 “破坏 “你的代码,以查看实时发生的情况。
- 有无数的指标、可视化、分支等等来帮助你确定你的代码在做什么以及它是如何反应的。
- 有时,你甚至可以在调试过程中即时改变数值。这提供了巨大的价值,甚至对于工作良好的代码套件也是如此。你基本上可以在任何时候进行手动单元测试。
- 因为你使用断点来标记要调试的区域,所以你不需要在你的代码中使用片段工作。这可以使你的代码更干净,并减少未来问题的数量。
总的来说,使用像Xdebug这样的工具是一个主动的决定,而不是一个被动的决定。你可以把步骤调试作为核心开发过程的一部分,就像实施单元测试作为测试驱动开发(TDD)的一部分。
如何开启PHP错误日志
虽然你可以在没有具体错误的情况下调试你的代码,但在没有打开Xdebug的情况下知道问题是否发生往往是很好的。这给你一个探索的起点。这不是严格意义上的必要条件,但可以成为你的链条中的一个有用部分。
要报告每一个出现的错误,你需要在相关的PHP文件的顶部添加一行。
error_reporting(E_ALL);
这是一个包罗万象的命令,你可以用ini_set函数实现同样的目的。
ini_set('error_reporting', E_ALL);
这让你可以逐个项目地改变php.ini文件中的设置。虽然你可以进入这个文件并进行手动更改,但通常使用 ini_set 来更改特定的参数是一个更好的主意:
ini_set('display_errors', '1');
一旦你把主动错误报告设置成你喜欢的样子,你就可以开始用Xdebug工作。
如何使用Xdebug
在接下来的几个部分,我们将向你展示如何使用Xdebug,包括你需要设置的步骤。虽然我们不能涵盖每个工具的各个方面,但这个快速入门指南会让你快速入门。
不过,首先,你需要安装Xdebug。让我们来看看如何做到这一点。
1. 为你的操作系统(OS)安装Xdebug
因为Xdebug可以适应任何数量的设置,所以每个设置的具体过程都会略有不同。在操作系统层面上,有一些区别。
- Windows:这是一个有点复杂的设置过程,包括使用现有的 PHP 文件和安装向导,然后下载适合你的系统的版本。
- Linux:这里的方法可以说是最直接的了。你可以使用包管理器来安装Xdebug,或者PHP扩展社区库(PECL)。
- Mac:这个方法也很简单。一旦你安装了PECL,你可以在终端实例中运行
pecl install xdebug。你还需要在你的系统上安装XCode命令行工具和PHP。
然而,大多数用户不会想坚持使用系统级的Xdebug实例。相反,你会想把它整合到你自己的开发环境中。
2. 将Xdebug集成到你的开发环境中
一旦你为你的操作系统安装了Xdebug,你应该把它连接到你的环境中。
这里有很多支持的系统和工具,我们无法一一介绍。稍后,我们将为你提供PhpStorm的说明。即便如此,还有很多其他流行的环境可以选择。下面是我们的一些顶级推荐。
Variing Vagrant Vagrants(VVV)
VVV是Make WordPress网站上的命名环境之一。

Varying Vagrant Vagrants标志
好消息是,VVV已经包括了Xdebug的一个版本,但你需要激活它。你可以在一个终端窗口中使用安全壳(SSH)来完成这个任务。
vagrant ssh -c "switch_php_debugmod xdebug"
不过,这对性能有一点影响,如果你提供你的网站,你将需要把这个选项重新打开。
Laravel Valet
对于一些用户来说, Laravel的Valet代表了一个近乎完美的网络开发环境. 更棒的是, 你可以将Xdebug与之整合.
要做到这一点, 你需要为调试器创建一个配置文件. 你可以在命令行中使用 php --ini 找到你自己的路径, 这将返回一些不同的文件路径:

终端机显示配置文件的路径列表
接下来,在其他.ini文件的路径上创建一个新的xdebug.ini文件。在我们的例子中,它位于/opt/homebrew/etc/php/7.4/conf.d。
一旦你打开这个新文件,也要打开加载的配置文件(你的主php.ini文件)的路径。两者都打开后,在底部添加以下内容。
- php.ini:
zend_extension="xdebug.so" - xdebug.ini:
xdebug.mode=debug
一旦你保存了你的改动,从终端运行 valet restart ,然后在你的网站的一个文件中加入 phpinfo(); exit; 。你想通过在浏览器中快速加载页面来检查这是否有效。

PHP信息界面
注意你可能需要用 sudo brew services restart php 来重启PHP,同时用 php --info | grep xdebug来检查你的系统安装Xdebug是否正确。你会注意到输出中的Xdebug专用行:

从这里,你可以寻求将Xdebug纳入你选择的编码编辑器中。
XAMPP
与Valet一样,XAMPP的过程也有几个部分。然而,Windows和macOS版本有两个不同的过程。
首先安装XAMPP,然后快速检查你的系统中是否存在php_xdebug.dll文件(Windows)或xdebug.so文件(macOS)。

显示XAMPP文件测试的终端窗口
如果该文件存在,就可以继续配置了。否则,首先需要下载适合Windows的二进制文件–为你喜欢的PHP版本下载一个64位的文件–或者如果你用的是Mac,则需要安装更多的依赖项。
对于 Windows,重命名 DLL 文件 php_xdebug.dll,然后把它移到 xamppphpext 文件路径中。接下来,在你喜欢的代码编辑器中打开xamppphpphp.ini文件并添加以下内容:
output_buffering = Off
在 [XDebug] 部分,添加以下三行。
xdebug.mode=debug
xdebug.start_with_request=trigger
zend_extension=xdebug xdebug.mode=debug xdebug.start_with_request=trigger
一旦你保存了你的更改,重新启动Apache并测试Xdebug。
对于Mac,你要确保你在终端实例中使用 xcode-select --install 来安装Xcode命令行工具。之后,有三个软件包你要用Homebrew来安装。
brew install autoconf automake libtool
在某些情况下,你还需要重新安装XAMPP以获得核心程序和 “开发者文件”。你应该可以只重新安装这些文件,但你要先对你现有的设置进行备份。
接下来,在你的系统上导航到Xdebug源文件夹的下载,解压TGZ文件。在一个终端窗口中,导航到该目录并运行以下程序:
pecl install xdebug
phpize pecl install xdebug
注意,你可能也需要在这里使用 sudo 。从这里,你可以编辑XAMPP的php.ini文件。对于大多数macOS安装,你可以在/Applications/XAMPP/xamppfiles/etc/php.ini中找到它。在这个目录中,你也会找到你的xdebug.so文件的路径–记下它并使用它来代替本片段中的文件路径占位符。
zend_extension=/path/to/xdebug.so
xdebug.mode=develop,degug
xdebug.start_with_request=yes
[xdebug] zend_extension=/path/to/xdebug.so xdebug.mode=develop,degug xdebug.start_with_request=yes
为了测试这是否有效,在htdocs XAMPP主目录下创建一个新的xdebug_info.php文件。在里面,添加以下内容:
xdebug_info();
<?php xdebug_info();
…然后刷新Apache并在浏览器中测试Xdebug。
结合PhpStorm使用Xdebug
一旦你通过操作系统和你的开发环境安装了Xdebug,你还需要查看调试器本身。你将通过你选择的代码编辑器或集成开发环境(IDE)来做这件事。就像你的环境一样,有很多可供选择的,每一个都可能有不同的方法。
这就是说,许多开发人员选择使用JetBrains的PhpStorm。事实上,PhpStorm提供了 “感知WordPress的协助“–而且它也是一个受欢迎的选择,因为有许多其他原因。

PhpStorm界面
JetBrains 网站包括连接 Xdebug 和 PhpStorm 的完整说明,但我们将在此回顾一下。
首先,在Preferences窗格中导航到Languages & Frameworks > PHP页面。在这里,打开CLI Interpreter下拉字段旁边的More Items串菜单:

在PhpStorm中选择一个CLI解释器
这将显示一些关于你的 PHP 版本和解释器的进一步细节。如果你点击Configuration file选项旁边的More items省略号,你会看到php.ini文件的完整路径。

在PhpStorm中修改PHP配置
接下来你将使用这个PHP文件来继续设置过程
在php.ini文件中工作
这里的第一个任务是编辑出任何影响 Xdebug 如何与 PhpStorm 一起工作的行。
在 php.ini 文件中,寻找以下几行,并将其删除或注释掉。
zend_extension=<path_to_zend_optimizer>
zend_extension=<path_to_zend_debugger> zend_extension=<path_to_zend_optimizer>
这些行不会在所有情况下出现,所以如果你没有看到它们,不要惊慌。
接下来,在文件中添加以下内容。
实例说明如何通过Python来连接管理WordPress

WordPress已经成为最常用的内容管理系统(CMS),这在很大程度上是由于它的应用编程接口(API)。WordPress的REST API使WordPress能够与其他用各种语言编写的应用程序 “对话”–包括Python。
Python是一种可扩展的编程语言,具有多种用途和人类可读的语法,使它成为远程管理WordPress内容的强大工具。
下面是一些WordPress REST API对你的应用程序的用例,以及你如何使用Python来支持它们。
- 使用预定义模板,使你的应用程序能够快速地将原始数据转化为带有解释的格式化文章。
- 在Django和Python上建立一个后台应用程序,在每次特定对象的折扣或销售事件发生时向你的客户显示限时优惠。
- 整合Python脚本,在你的WordPress网站内运行
本教程将帮助你创建一个简单的Python控制台应用程序,与WordPress REST API进行通信并执行操作。完整的项目代码也是可用的。
安装和配置WordPress
首先,让我们在你的开发机器上本地安装和运行一个WordPress网站。这是开始使用WordPress的一个很好的方法,因为你不需要创建一个账户或购买一个虚拟主机的域名。
在本地安装WordPress之前,需要在你的电脑上运行一些组件,包括Apache网络服务器、本地数据库和编写WordPress的PHP语言。
幸运的是,我们可以使用DevKinsta,一个免费的本地WordPress开发套件,可用于所有主要的操作系统(你不需要成为Kinsta的客户来使用它)。
DevKinsta可用于Windows、Mac和Linux,并在你的本地机器上安装WordPress和它的所有依赖项。
在安装DevKinsta之前,你必须在本地运行Docker,所以如果你还没有下载并安装Docker引擎。
安装Docker Desktop后,你可以自动下载适合你的操作系统的软件包。

DevKinsta安装页面
当你运行DevKinsta安装程序时,Docker立即开始初始化。

DevKinsta的创建新网站菜单
现在,DevKinsta安装程序要求你创建WordPress管理账户的凭据。

DevKinsta显示新WordPress网站表格
一旦安装,DevKinsta就是一个独立的应用程序。现在你可以同时访问WordPress网站(通过Open Site按钮)和WordPress管理仪表板(WP Admin按钮)。

DevKinsta的网站信息面板
接下来,你需要为你的网站启用SSL和HTTPS。这可以通过SSL证书提高你网站的安全性。

DevKinsta的 “SSL和HTTPS “选项
现在进入DevKinsta应用程序,点击Open site按钮。一个新的浏览器标签将显示你的WordPress网站的主页。

WordPress主页
这是你的WordPress博客,你可以在这里开始写作。但是为了使Python能够访问和使用WordPress REST API,我们必须首先配置WordPress Admin。
现在点击DevKinsta应用程序上的WP Admin按钮,然后提供你的用户和密码以访问WordPress仪表板。

WordPress登录表单
一旦你登录了,你会看到WordPress仪表盘。

WordPress仪表板页面
WordPress使用cookie认证作为它的标准方法。但是,如果你想用REST API来控制它,你必须用一种允许访问WordPress REST API的技术来认证。
为此,你将使用应用密码。这些是WordPress生成的24个字符的长字符串,并与有权限管理你的网站的用户配置文件联系起来。
要使用应用密码,请点击仪表板上的插件菜单,然后搜索同名的插件。然后安装并激活应用程序密码插件。

WordPress的应用密码插件
要开始创建你的应用程序密码,首先要展开Users菜单,点击All Users。

扩展的用户菜单
现在,点击你的管理员用户名下面的编辑。

WP-Admin WordPress界面
向下滚动 “编辑用户 “页面,找到 “应用密码 “部分。在这里,为应用程序密码提供一个名称,以后你将用它来验证你的Python应用程序的请求和消费REST API。

申请密码页
点击Add New Application Password,这样WordPress就可以为你生成一个随机的24个字符的密码。

新的申请密码页面
接下来,复制这个密码并将其保存在一个安全的地方,以便以后使用。记住,一旦你关闭这个页面,你将无法找回这个密码。
最后,你必须配置permalinks。WordPress允许你为你的permalinks和archives创建一个自定义的URL结构。让我们改变它,使一个WordPress的文章标题,例如,”你的第一个WordPress网站”,可以通过直观的URL https://your-website.local:port/your-first-wordpress-website/。这种方法带来了一些好处,包括改善可用性和美观性。
要配置固定链接,展开设置部分并点击固定链接菜单。在这里,将常用设置改为文章名称。

使用Post name结构来设置固定链接结构也是必要的,因为它将允许我们在以后的Python代码中使用JSON格式来检索文章。否则,将抛出一个JSON解码错误。
如何从Python中控制WordPress
WordPress是用PHP编写的,但它有一个REST API,使其他编程语言、网站和应用程序能够消费其内容。在REST架构中暴露WordPress的内容,使其以JSON格式提供。因此,其他服务可以与WordPress集成,执行创建、读取、更新和删除(CRUD)操作,而不需要安装本地的WordPress。
接下来,你将建立一个简单的Python应用程序,看看你如何使用WordPress REST API来创建、检索、更新和删除文章。
为你的新的简单Python项目创建一个新的目录,并命名为 PythonWordPress之类的。
../PythonWordPress
现在,你将为你的项目创建一个虚拟环境,让它保持一套独立的已安装的 Python 包,将它们与你的系统目录隔离,避免版本冲突。通过执行venv 命令来创建一个虚拟环境。
python3 -m venv .venv
现在,运行一个命令来激活.venv虚拟环境。这个命令因操作系统而异。
- Windows:
.venvScriptsactivate - Mac/Linux:
.venv/bin/activate
接下来,存储与你的WordPress帐户相关的配置。为了将应用程序的配置与你的Python代码分开,在你的项目目录下创建一个.env文件,并将这些环境变量添加到该文件中。
API_USERNAME=”<>”
API_PASSWORD=”<>”
WEBSITE_URL="<>" API_USERNAME="<>" API_PASSWORD="<>"
幸运的是,从Python应用中读取上述数据很容易。你可以安装Python-dotenv包,这样你的应用程序就可以从.env文件中读取配置。
pip install python-dotenv
然后,安装 aiohttp,一个用于 Python 的异步 HTTP 客户端/服务器。
pip install aiohttp
现在添加一个名为app.py的文件,代码如下。
通过Docker部署运行MariaDB数据库

MariaDB是一个免费的数据库服务器,使用结构化查询语言(SQL)提供数据访问。它提供了密码、基于角色的访问控制等安全功能来保护你的数据。
为了部署MariaDB并向用户授予数据访问权,你需要托管数据库服务器。你可以选择云供应商或使用托管或共享主机服务。
本文将教你如何使用Docker容器运行MariaDB,配置和运行数据库服务器,并将其连接到WordPress网站。
什么是Docker?
Docker是一个免费的开发工具,使你能够在一个称为容器的受控环境中运行应用程序。容器有应用程序代码、依赖性和运行应用程序的关键系统工具。这使你能够在整个软件开发生命周期内提供强大的应用程序。
通常情况下,容器使用你的操作系统作为主机。这意味着主机的内核提供对CPU、内存和文件系统等资源的访问。因此,这不需要像虚拟机那样的传统虚拟化。使用Docker来运行MariaDB实例有几个优点。
- 它的数字足迹小,保证了系统资源的有效利用。
- 它是一致的,允许开发人员在生产和测试部署中运行应用程序,只需最小的变化。
- 它为资源共享提供了一个灵活的机制。
- 它是可扩展的–你可以在一台主机上运行许多容器。
如何使用Docker部署MariaDB
在本节中,你将使用Docker创建容器化环境来运行MariaDB。你将了解到Docker所提供的容器技术。Docker可以在大多数版本的Windows、macOS和Linux发行版上运行。在本教程中,你需要有Windows 10/11、Ubuntu 20.04或macOS X机器来跟随。
1. 安装Docker
Docker的最大特点之一是它的可移植性。它使用主机的操作系统,使其成为测试和发布环境的理想选择。本节将教你如何在三个操作系统上安装Docker。
Ubuntu 20.04
首先,更新Ubuntu的软件包列表。
sudo apt-get update
然后,允许通过HTTPS访问在线存储库。
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

接下来,添加Docker的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
现在,添加Docker的存储库。
echo deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
然后,更新Ubuntu的软件包以包括Docker的仓库。
sudo apt-get update
最后,安装Docker引擎。
sudo apt-get install docker-ce
如果你使用的是不同的Linux发行版,如Debian或Fedora,请遵循在Linux中安装Docker的官方文档。
Windows 10/11
Docker可以在Windows 10或11上使用Windows Subsystem for Linux版本2(WSL 2)作为后端。使用以下步骤来安装Docker。
首先,在你的Windows系统上启用虚拟机平台功能。这使你能够安装WSL 2,并在你的Windows机器上安装和运行一个虚拟化的Linux实例。
接下来,安装WSL。
然后,访问微软商店,下载Ubuntu 20.04。
最后,下载Docker Desktop for Windows。打开下载的文件,启动安装过程。
安装完成后,从你的任务栏中搜索 “Docker Desktop “并打开它。
(注意:你需要使用PowerShell作为你的终端来使用Docker命令。)
macOS X
Docker可以通过苹果应用商店在macOS机器上使用。有两种针对英特尔和苹果芯片的安装程序可用。
首先,从上面的一个链接中下载相应的安装程序。然后,双击以打开下载的.dmg文件。
接下来,将Docker图标拖放到应用程序文件夹中。
现在,从应用程序文件夹中打开Docker应用程序,按照提示完成配置。
一旦安装过程完成,双击桌面状态栏中的Docker图标,即可打开它。
使用默认的终端来运行Docker命令。
2. 下载MariaDB镜像
Docker镜像提供了一个命令和配置的集合,以创建一个Docker容器。它负责安装运行一个应用程序所需的一切。你可以从Docker Hub找到MariaDB的官方镜像。
要从Docker Hub下载MariaDB的镜像,你需要使用 docker pull 命令。
docker pull mariadb
你也可以通过运行以下内容查看已下载的Docker镜像的列表。
docker images
这是命令的输出。
![]()
列出Docker镜像
3. 创建一个容器
容器是一个软件单元,具有运行一个进程或程序所需的所有代码、依赖性和系统工具。你将使用之前下载的镜像来创建一个MariaDB容器。
docker create mariadb --name mariadb-wp -i –t
这将创建一个名为 mariadb-wp的MariaDB容器。–i 标志允许一个交互式会话,而–t 选项则创建一个伪终端。官方文档提供了关于所有可用变量的信息。
4. 运行、暂停和停止容器
Docker为开发者提供了可配置环境的灵活性。在本节中,我们将用环境变量来配置MariaDB的容器,为你的容器设置特定的系统属性。
MariaDB有很多变量可以设置,比如数据库名称、密码和数据库用户。关于支持的环境变量的更广泛的列表,请参考Docker的MariaDB的文档。
docker run -d --name mariadb-wp -p 3306:3306 -v '/path/on/host/:/var/lib/mysql' -e "MARIADB_ROOT_PASSWORD=" -e "MARIADB_DATABASE=wordpress" -e "MARIADB_USER=wordpress" -e "MARIADB_PASSWORD=" mariadb
上面的命令配置了MariaDB的根密码、数据库用户和相关密码。然后它在3306端口运行MariaDB。你可以决定用下面的命令来暂停一个容器的应用程序的运行。
docker pause mariadb-wp
最后,你也可以用下面的命令来停止在容器内运行的应用程序。
docker stop mariadb-wp
5. 将容器化的MariaDB连接到一个WordPress网站上
现在,我们需要将MariaDB连接到一个外部的WordPress网站。你可以在这里了解更多关于在本地创建一个WordPress网站的信息。
在WordPress网站的根目录下,在你的代码编辑器中打开wp-config.php文件。找到为数据库定义变量的代码部分,并编辑它,如下图所示。确保你在创建MariaDB容器时使用数据库名称、密码和端口号。
define(‘DB_USER’, ‘wordpress’);
define(‘DB_PASSWORD’, ”);
define(‘DB_HOST’, ‘http://localhost:3306’);
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress’);
define('DB_PASSWORD', '');
define('DB_HOST', 'http://localhost:3306’);
接下来,你需要将你的WordPress网站的数据库转储导入到容器化的MariaDB中。首先,确保你已经导出了网站的当前数据库。要了解更多,请查看我们的MySQL数据库备份教程。
导出数据库后,在容器内安装数据库转储。
docker exec -i mariadb-wp sh -c 'exec mysql -u root -p "$MARIADB_ROOT_PASSWORD" < /some/path/on/your/host/all-databases.sql'
docker exec 命令允许开发者在容器内运行shell命令。我们在上面的命令中使用导出的文件将一个数据库导入MariaDB。
在你的WordPress网站上添加一个新的文章
我们将使用WordPress管理账户创建一个样本文章来测试这个集成。
首先,登录WordPress,点击文章>写文章。如下面所示,填写细节,然后点击发布。创建文章后,点击查看文章,查看新添加的文章。

在WordPress编辑器中添加一个新的文章
这就是它的全部内容!
通过DevKinsta管理MariaDB和Docker
Kinsta的免费应用程序DevKinsta使开发者能够有效地创建容器化的WordPress网站。该应用使用Docker来配置PHP版本、数据库服务器和Web服务器。DevKinsta应用支持使用macOS、Windows和Ubuntu/Linux的开发者。
要开始使用,请在你的本地机器上下载、安装并启动DevKinsta。该应用程序为你提供三个选项:创建一个新的WordPress网站,从Kinsta导入一个现有的网站,或创建一个自定义网站。

使用DevKinsta创建新网站
创建一个新的WordPress网站就像填写一个简单的表格并点击创建网站一样容易。

DevKinsta的新WordPress网站创建界面
恭喜你 – 你现在已经使用DevKinsta创建了一个容器化的WordPress网站。
小结
Docker是一个对开发者友好的工具,用于将运行MariaDB等数据库服务器的软件容器化。它的最小化环境有助于保持系统资源的效率而不牺牲功能。
本教程教你如何安装Docker,设置MariaDB,并将WordPress网站与容器化的MariaDB数据库相连。另外,你还学会了如何使用DevKinsta来创建一个完全容器化的WordPress网站。
对于WordPress网站的创建及其众多的托管解决方案,还有很多东西可以探索。如果你想发现你的网站管理可以如此简单,Kinsta的管理型WordPress主机可以满足你的要求。
了解数据库技术:SQLite与MySQL的比较
数据库已经成为几乎所有可以想象的应用程序的基本后端存储工具。如果你的应用程序包含需要访问的数据,你就需要一个数据库来存储和快速检索这些数据。
数据库管理系统(DBMS)是旨在使用、检索和定义规则以验证和操作数据库中的数据的软件。有许多DBMS类型:关系型、面向对象型、分层型和网络型。
选择一个合适的DBMS对于你的应用程序的成功和速度至关重要。有许多开源的DBMS,包括MySQL、MariaDB、SQLite、PostgreSQL和Neo4j,为你的项目选择最适合的数据库可能是一种挑战。
让我们比较一下两个最流行的开源管理系统–MySQL与SQLite–详细说明它们是如何工作的,它们的根本区别,优点和缺点,最后,对于WordPress托管的网络应用来说,哪个更合适。
- 使用开源数据库的好处
- 什么是SQLite?
- 什么是MySQL?
- SQLite与MySQL:用例分析
- SQLite与MySQL的对比:优点和缺点
- SQLite与MySQL的对比:哪个更适合WordPress?
使用开源数据库的好处
虽然有许多专有的DBMS选择,但事实证明,开源数据库是最受欢迎的。它们的主要好处包括以下几点。
- 数据库信息不与他人共享,提供安全优势。
- 为支持更多的数据量或请求而进行扩展的成本较低
- 一些开源数据库在可用资源的基础上运行,使其更灵活地匹配你的应用程序的需求。
什么是SQLite?
如前所述,DBMS包括四个主要类型。这些类型中的大多数以分层模型处理数据,以树状结构组织,并通过链接连接。
SQLite是一个开源的关系型数据库管理系统(RDBMS)。 RDBMS在多个二维表中存储数据,而不是一个大表。每张表由包含唯一值的行组成,该值被称为键,用于连接各表。这就是为什么这些DBMS被称为关系型。
在RDBMS中有两种类型的键:主键和外键。主键是识别每个数据库行的唯一值,而你可以使用外键来引用其他表。例如,假设你有一个公司雇员的数据库。没有必要在雇员表中添加部门名称。相反,你可以为雇员表中的部门添加一个带有引用的列–外键。这个外键引用 “部门 “表中的特定行。
SQLite,正如它的名字所暗示的,在设置、管理和存储方面是轻量级的。
大多数数据库需要一个服务器进程,但SQLite是无服务器的,这意味着应用程序可以直接读取和写入数据,而不需要客户端-服务器架构。此外,无服务器的SQLite不需要安装或配置,使其自成一体,对操作系统(OS)的依赖性较低。
这些特点使SQLite适用于物联网(IoT)、嵌入式应用和桌面应用。
什么是MySQL?
快速、可靠、易学,大多数应用都使用MySQL作为他们的首选DBMS。
与SQLite不同,MySQL遵循客户端-服务器架构,需要服务器来运行。服务器使用结构化查询语言(SQL)处理检索、操作和添加数据等命令。
MySQL还带有一个内置的图形用户界面(GUI),称为MySQL Workbench,用于访问数据。它还提供了一个名为mysqladmin的命令行界面(CLI),用于管理可用的数据。
此外,MySQL是独立于平台的,这意味着它可以在任何操作系统上运行,并与不同的编程语言如Python、Java和C++兼容。
作为最流行的DBMS,还有一个优势:它的社区。互联网上有数以百万计的教程可以帮助你学习MySQL,而且你可以在网上找到几乎任何问题的答案。由于Oracle维护着MySQL,你可以在MySQL网站上找到教程、证书和支持。你还可以在我们的博客上阅读更多关于MySQL的信息。
SQLite与MySQL:用例分析
虽然MySQL和SQLite都是开源的RDBMS,但它们的架构和使用情况非常不同。
架构
MySQL遵循一个多层的服务器-客户端架构,由客户端、服务器和存储组成。客户端层使用GUI或CLI处理用户查询和命令。服务器层处理命令的逻辑,为每个请求创建一个新的线程。最后,存储层负责存储数据表格。
相比之下,SQLite是一个无服务器的DBMS,它将SQL编译成字节码,然后使用虚拟机执行。后端以B树的实现方式将表存储在磁盘上。
数据类型
像大多数DBMS一样,MySQL使用静态类型进行数据存储,这意味着你必须在创建表的时候定义列数据类型。
虽然大多数数据库引擎仍然使用静态类型来存储字符串数据,但SQLite使用动态类型来存储数据–存储在列中的值决定了列的数据类型。例如,如果你在创建时创建了一个整数类型的表,你可以在这个列中存储任何数据类型,因为该类型与值本身相关,而不是它的容器。此外,MySQL对常见的静态类型有向后兼容性。
SQLite使用数据类型,而不是数据的存储类。这些类型比数据类型更通用,可以采用以下存储类之一。NULL、INTEGER、TEXT、BLOB和REAL。
可扩展性
MySQL的服务器-客户端架构是为可扩展性和大型数据库而设计的。服务器层简化了服务器的功能,而无需更新客户端。
相反,SQLite仅限于单用户访问,使可扩展性变得困难。此外,所需的内存量随着数据库的增大而增加。
可移植性
MySQL在移动前需要压缩成一个文件,随着数据库的增加,这可能需要很长的时间。同时,SQLite将数据库保存为一个文件,使得复制和转移很容易。由于SQLite在虚拟机上运行查询,它对操作系统的依赖性很小。
安全性
任何人都可以编辑和查看SQLite的单一数据文件。SQLite没有一个内置的认证系统,所以安全性仅限于在该文件上设置的权限。
另一方面,MySQL有许多安全功能,如支持不同权限级别的用户管理和使用安全外壳(SSH)。
设置的简易性
MySQL需要许多配置,如服务器配置、用户管理和备份。另一方面,SQLite很容易安装,不需要任何配置就可以运行。
SQLite与MySQL的对比:优点和缺点
MySQL的优点:
- 易于学习
- 与几乎所有的操作系统兼容
- 与许多语言如C++、PHP、Java、Perl等一起工作
- 支持多用户环境
- 性能高
MySQL的缺点:
- 一些数据损坏的情况(虽然不是很严重)
- 调试工具需要一些改进
- 需要大量的内存
SQLite的优点:
- 服务器性能和内存要求低
- 减少了能源消耗
- 自成一体,便于携带
- 默认包含在所有的PHP安装中
SQLite的缺点:
- 不支持多用户环境或XML格式
- 一次只能处理一个连接
- 性能随着数据库大小的增加而下降
- 不能从客户端查询数据库
SQLite与MySQL的对比:哪个更适合WordPress?
WordPress是一个用PHP编写的流行的内容管理平台(CMS),它使用数据库来存储所有的网站信息,如用户数据、帖子、设置和内容。
WordPress的默认数据库管理系统是MySQL,使其成为大多数WordPress网站的事实选择。它很适合大型项目,因为它很容易扩展,并提供更大的安全性。然而,SQLite是连接数较少的小型项目的理想选择,特别是如果你需要跳过配置MySQL数据库的复杂过程。
虽然你可以用变通的方法让SQLite与WordPress一起工作,但这并不直接。WordPress的核心团队已经开始讨论让WordPress正式支持SQLite。实现这个功能可能需要一些时间,但是在WordPress安装过程中可以选择数据库类型将是超级有帮助的。
还有MariaDB,是更大的MySQL的一个分支。MariaDB提供了更好的性能,更敏捷的更新,以及更好的许可。虽然它们总体上是相似的,但在某些情况下,MariaDB是更好的。你可以在这里阅读更多关于MariaDB与MySQL的信息。
小结
数据库对大多数应用来说都是必不可少的。虽然数据库有不同的许可类型,但开源数据库管理系统为其他专有解决方案提供了一个很好的选择。
比较SQLite与MySQL是具有挑战性的,因为两者都有方便的功能和独特的用例。SQLite是轻量级和可移植的,使它更适合于小规模的应用,如物联网和低流量的网站。另一方面,MySQL有一个庞大的社区基础,更适合可扩展的应用。
正确的工具取决于你的应用程序的独特要求。选择完美的存储和托管解决方案可能会感到具有挑战性。
如何列出MySQL数据库(分步代码教程)

MySQL是当今最广泛使用的关系型数据库管理系统(RDBMS)之一。它是一个强大的数据库平台,允许创建和管理可扩展的数据库,主要使用结构化查询语言(SQL)。
MySQL服务器是数据库所处的环境–也是它们被访问的地方。作为一个服务器管理员,你经常需要检索这个环境的细节–列出服务器上的数据库,显示特定数据库的表,查看用户角色和权限,访问约束条件,等等。
本文将解释如何通过命令提示符列出MySQL数据库的详情办法。
- 列出MySQL数据库的先决条件
- 在你的系统变量环境中添加MySQL路径
- 登录到MySQL
- 显示MySQL服务器内的数据库
- 过滤数据库输出的结果
- 使用信息结构来查询表元数据
- 常见的问题和最佳做法
- 数据库管理员
列出MySQL数据库的先决条件
你必须在你的本地机器上运行MySQL服务器才能开始使用。如果你没有MySQL,有几种方法可以安装它。
- 安装WAMPServer、XAMPP、MAMP或任何其他包括MySQL的软件分发栈。
- 直接从他们的官方网站下载并运行MySQL安装程序,通过设置过程来配置和安装MySQL服务器和其他工具。
为了方便地使用命令行运行MySQL命令,你需要将MySQL可执行文件的路径添加到你的系统环境中。如果你使用选项二安装了MySQL,这一步就没有必要了,所以可以随意跳过下一节。
将MySQL路径添加到你的系统的变量环境中
如果你在Windows电脑上运行XAMPP或WAMP,本节将指导你把MySQL可执行路径添加到你的系统变量环境中。
首先,启动你的Windows文件资源管理器并导航到此电脑。点击你安装WAMP或XAMPP软件包的驱动器(C:)。
如果你正在运行XAMPP,导航到xampp > mysql > bin,并复制bin文件夹的完整路径。对于WAMP,通过{your-wamp-version} > bin > mysql > {your-mysql-version} > bin导航到其完整路径。

bin文件夹的完整路径
点击 “Start“菜单,搜索 “path”。点击Edit the system environment variable。
然后,点击Startup and Recovery(启动和恢复)下的Environment Variables(环境变量),选择PATH变量并点击编辑。
接下来,点击 “新建“,粘贴你的MySQL可执行文件的完整路径(你之前复制的)。

编辑环境变量
然后,通过单击 “确定 “来保存这些更改。
现在路径已被添加,你可以在终端执行MySQL命令。
登录到MySQL
要列出MySQL数据库,用户必须被授权访问所有数据库,或者你必须设置一个全局的SHOW DATABASES权限,授予所有用户访问权。
在通过命令提示符登录之前,请确保你的MySQL服务器正在运行。
mysql -u -p
注意:用你的用户名替换 u 。MySQL的默认用户名是 root,而密码是空的(默认没有密码)。

登录到MySQL
显示MySQL服务器中的数据库
现在你已经登录了,你可以通过执行 SHOW DATABASES 命令列出服务器中存在的MySQL数据库。
SHOW DATABASES;
在返回数据中,你会得到存储中存在的所有数据库。

存储的数据库的列表
在返回的六个数据库中,information_schema 和 performance_schema是安装MySQL时自动生成的默认数据库。
information_schema 数据库是一个不可修改的数据库,它存储了与数据库和其他存储在MySQL服务器中的对象(视图、用户权限、表、约束等)有关的所有信息。
过滤数据库输出的结果
以前,你用 SHOW DATABASES返回MySQL服务器上的所有数据库,但你经常需要过滤数据库输出,主要是当服务器上有许多数据库时。
LIKE 子句根据一个指定的模式过滤 SHOW DATABASE 的结果。下面是一般的语法。
SHOW DATABASES LIKE '';
它必须是一个代表你想匹配的模式的字符串。该字符串必须以百分比符号(%)结尾,表示一个或多个字符。
例如,如果你想只显示名称以字母w开头的数据库,你可以通过运行以下程序来实现。
SHOW DATABASES LIKE 'w%';
下面是过滤后的结果。

使用’w%’过滤后的数据库响应
使用信息结构来查询表元数据
早些时候,你看到了 information_schema 数据库如何在MySQL服务器环境中存储与数据库、表和其他对象有关的所有信息。
information_schema 数据库利用schemata表来存储所有数据库的信息。对于数据库的过滤,你可以进行复杂的搜索,以查询特定数据库的模式表。
例如,如果你想要那些名字以 “samp “或 “word “开头的数据库,你可以结合其他几个子句来进行复杂查询。
SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE 'samp%' OR schema_name LIKE 'word%';
下面是结果。

复杂查询的结果
此外,你还有来自 information_schema 数据库的tables表,它包含了所有表的信息。同样,你可以执行一个查询,只检索符合指定模式的表。
例如,下面的查询只返回WordPress表的模式信息–只返回名称以 “wp_”开头的表。
SELECT * FROM information_schema.tables WHERE table_name LIKE 'wp_%';
结果是这样的。

只有WordPress表的信息结构的结果
在 information_schema 中发现的其他表格包括columns, constraints, table_constraints, check_constraints 和 referential_constraints。
常见的问题和最佳做法
执行SQL时最常见的错误原因之一是没有在语句的结尾使用分号。
另一个原因是使用无效的SQL语法或表/列名称拼写错误。为了避免这种情况,请交叉检查表或列的名称,确保其拼写正确。请确保也要交叉检查你的语法。
这里有一些其他的最佳做法要记住。
对SQL关键词使用大写字母
当写SQL代码时,总是对SQL关键字使用大写字母,对表名和列名使用小写字母。这使你的代码更易读,更不容易出错。
所以,与其这样:
select * from information_schema.tables where table_name like 'wp_%';
不如这样做:
SELECT * FROM information_schema.tables WHERE table_name LIKE 'wp_%';
避免使用 SELECT *
避免在你的SQL查询中使用SELECT *。你的请求是不明确的,因为你不能总是知道它将返回什么。相反,指定你想从表中选择的列。
所以,与其这样:
SELECT * EXCEPT(phone) FROM users.profile
不如这样:
dob,
address,
country,
address,
FROM user.profile
SELECT name,
dob,
address,
country,
address,
FROM user.profile
缩进你的代码
最后,还有一个使查找错误更容易的提示是缩进你的代码。这将使它更有可读性。
数据库管理器
另外,你可以选择通过使用数据库管理器来管理你的数据库,而不用写SQL。这允许用户访问数据库管理功能,而不需要编写SQL查询。这个软件连接到MySQL服务器,并提供一个用户界面来暴露数据库的功能。一旦连接,用户界面将显示服务器上的所有数据库。各个管理工具的外观和感觉各不相同,但过程是相似的。

DevKinsta的数据库管理器
有几个工具可供选择,包括 phpMyAdmin 和 Adminer,这两个工具都可以通过 DevKinsta 访问。DevKinsta的默认管理工具是Adminer,因为它是轻量级的,简单的,快速的,但phpMyAdmin也可以轻松访问。
小结
作为一名服务器管理员,你需要能够有效和准确地检索关于你的MySQL服务器上的数据库的详细信息。查看服务器上有哪些数据库,查看特定的表和其中的信息,以及访问有关用户角色和权限的信息,这些都是至关重要的任务。幸运的是,从你的命令行使用SQL可以使这一切变得轻而易举。
最常见的WordPress函数

WordPress是目前流行的内容管理系统(CMS)平台,适用于各种类型的网站。它的用户友好性和高度可定制性,使其成为众多项目的热门选择。
这篇文章列出了定制WordPress主题开发中使用的常见PHP代码。我们提供了关于如何将这些函数纳入你的WordPress网站的基本概述。
如何使用WordPress函数
WordPress的一个优点是它为内容生产者提供了直观的用户界面,同时又有足够的配置选项供任何认真的开发者定制CMS以满足独特的需求。上面列出的WordPress功能是由WordPress提供的,可以在开发WordPress主题时使用,但WordPress是可扩展的,允许编写自定义功能。幸运的是,在许多情况下,WordPress提供的功能足以建立或改变一个企业或组织的网站。如果你正在创建你自己的自定义WordPress主题,或者你想知道如何编辑一个你已经安装的主题,那么请执行这些步骤。
- 登录到你的WordPress网站。一个常见的地方是:www.your-wordpress-site.com/wp-admin 然而,WordPress登录页面的确切位置将取决于你的网站是如何设置的。
- 一旦登录到WordPress,你会看到一个叫做仪表板的页面。在左边应该有一个导航菜单,你要找到外观→编辑器部分来查看相关的WordPress文件。
- 编辑器页面的右侧会有一个你可以查看和编辑的文件列表。要开始,你可以从该列表中选择index.php,点击它。
index.php模板的第一行可能有这样一段代码:<?php get_header(); ?>。这是一个简单的代码片段,说的是 “将页眉内容放在这个页面的顶部”。在另一个文件中,一个通常被命名为header.php的文件,有一些代码指定了标题的实际内容。如果你仍然在WordPress的编辑器部分,你可以从右边的列表中选择header.php来看看这是如何建立的。下面你会发现更多WordPress中常用的有用代码片段。
| 其他有用的WordPress代码片段 | |
|---|---|
| 自定义permalinks | /%postname%/ |
| 包括任何文件 | <?php include(TEMPLATEPATH .’/x’); ?> |
| 搜索表单的值 | <?php the_search_query(); ?> |
| 打印信息 | <?php _e(‘Message’); ?> |
| 显示注册链接 | <?php wp_register(); ?> |
| 显示登录/注销链接 | <?php wp_loginout(); ?> |
| 将内容分成若干页 | <!–next page–> |
| 切断内容 | <!–more–> |
| 管理员的元数据 | <?php wp_meta(); ?> |
| 加载页面的时间 | <?php timer_stop(1); ?> |
| 加载页面的查询 | <?php echo get_num_queries(); ?> |
如何在Linux、macOS、Windows服务器上安装PHP

建立一个服务器可能是一项艰巨的任务,特别是在安装像PHP这样的语言时。如果你想让一个WordPress测试服务器运行起来,这是一个必须要学习的技能。
不知道从哪里开始在你的服务器上安装PHP?根据你独特的设置,有很多方法可以做到这一点。在哪里下载 PHP,哪个版本,需要什么来使它工作,以及如何在不同的操作系统上安装 PHP?
我们将在这个一站式的 PHP 安装指南中回答所有这些问题。
什么是PHP?

PHP logo
PHP是一种开源的脚本语言,主要用于Web开发和服务器端(后端)脚本。简单地说。
- PHP可以安装在服务器上运行脚本(例如在网站上添加表单的代码片段)。
- 它是在服务器端而不是客户端运行的,所以它在后台而不是在浏览器中工作。
- 它与HTML很好地结合在一起,使它非常适用于网络开发。
它也是最容易学习的网络脚本语言之一,使它成为初学者的热门选择。但它也相当强大,适合于高级网站功能。
许多网站和工具都使用PHP和它的许多扩展(.NET、Apache和MySQL可能听起来很熟悉)。 WordPress主要建立在PHP上,它的大多数插件和主题也在PHP上运行。
你的服务器需要PHP吗?
那么你知道什么是PHP,但为什么你要在你的服务器上安装它?
最明显的原因是,它是让WordPress启动和运行的必要条件,因为它几乎完全建立在PHP上。PHP也为大多数WordPress的功能、钩子、主题和插件提供动力。
你可以在这里看到所有其他的WordPress系统要求:

WordPress要求
所以,如果你想运行一个WordPress测试服务器来玩玩,或者建立一个暂存网站,你就需要安装PHP。
除此之外,PHP对初学者来说是一个很好的启动点。与其他网络脚本语言相比,它使用起来很简单,但这并不以牺牲功能为代价。如果你足够熟练,你可以用它做各种各样的事情。
PHP也相当流行。因此,你可以在网上找到大量的扩展和资源。
除此之外,如果你想学习WordPress主题和插件的编码,你就需要学习PHP。建立一个测试服务器是一个很好的实验方法。
请注意,许多虚拟主机服务器都预装了PHP和WordPress。
你需要手动操作的唯一原因是,如果你要从头开始建立一个服务器,无论是在你的本地电脑上还是在一个没有管理的托管环境中。
这就是说,让我们进入服务器设置说明。
PHP的先决条件
在安装 PHP 之前,你需要确保你的服务器能够处理它。幸运的是,这些要求是相当基本的,而且很多软件可能已经安装在你的电脑上了。
如果你以前没有创建过服务器,你应该看看这个指南,在多个操作系统上建立一个本地服务器。具体的细节因你的操作系统而异,但你应该知道如何使用命令行并准备好安装新的软件。
无论在什么操作系统上安装 PHP,都需要一个 web 服务器来运行它。还可能需要安装一个像 MySQL 这样的数据库,所以要记住这一点。
下面是每个操作系统的 PHP 先决条件,从 Linux 开始。
- 一个 ANSI C 编译器。
- 特定模块的组件,如 GD 图形库或 PDF 库。
- 可选的:Autoconf 2.59+(适用于PHP版本<7.0),Autoconf 2.64+(适用于PHP版本>7.2),Automake 1.4+,Libtool 1.4+,re2c 0.13.4+,和Bison。
你也应该已经熟悉浏览过类似 Unix 的操作系统了。
现在是对 Windows 的 PHP 要求。
- 在 PHP 5.5+ 上支持多种 Windows 操作系统,但 7.2.0+ 用户不能使用 Windows 2008 或 Windows Vista。
- Visual C Runtime(CRT)。
- Visual Studio 2012, 2015, 2017, 或Microsoft Visual C++ Redistributable for Visual Studio 2019,取决于你的PHP版本。
最后,macOS没有先决条件,因为PHP是与系统捆绑的。我们将在下面解释如何启用它。
在哪里下载PHP
如果你需要手动下载PHP文件,你应该从官方网站的PHP下载页面获取。
避免从第三方网站安装,除非你知道它们是安全的,因为从第三方网站下载文件可能导致意外地安装恶意软件。

PHP下载页面
如果是为 Windows 机器下载,请在每个版本的 PHP 中寻找 “Windows 下载 “链接,并确保安装的是正确的文件。
你也可以安装旧版本的 PHP,但除非你知道自己在做什么,否则不建议这样做,因为它们会使你的服务器暴露在错误和重大的安全缺陷中。
如果你运行的是Linux发行版,通常不需要通过网站获取文件,应该使用命令行。我们将在下面详细介绍。
我应该使用哪个PHP版本?
如果你点击了上面的下载链接,你很可能看着所有这些文件而感到不知所措。哪个PHP版本是正确的?
一般来说,如果你要开始一个全新的项目,兼容性问题不是问题,你应该得到最新的稳定版本的 PHP。
有时也可以下载测试版的 PHP,这些版本甚至更新,但这些版本通常都有错误,而且只是为了帮助开发人员收集反馈意见而发布的。大多数情况下,应该坚持使用稳定版本。
那旧版本呢?每个 PHP 版本都有新的功能,但这意味着与旧的功能有新的不兼容之处。如果你需要做一些最新的 PHP 版本不支持的特定事情,你可以使用旧版本,但你应该只坚持使用目前支持的版本。
如果你不确定,那就使用最新版本的PHP。
请注意,WordPress只与某些版本的PHP兼容。它在技术上支持从5.6.20以上的PHP版本,但这些版本已经相当老了,因此不推荐。7.4和8.0版本是目前对WordPress支持最好的版本。
PHP版本8也是兼容的,但目前,这是很新的,并不是所有的插件都能正常工作。如果你担心兼容性问题,坚持使用PHP7.4版本。你可以阅读我们的PHP基准帖,看看各种PHP CMS和框架在不同PHP版本上的表现。
如何在Linux上安装PHP
在开始之前,你应该熟悉终端和如何操作一般的类Unix操作系统。一般来说,这些命令行代码应该适用于任何在终端中使用正常语法的Linux发行版,但我们在下面为特定的操作系统留下一些说明。
首先,你应该确保你的软件包是最新的,所以在终端运行这个Linux命令。
sudo apt-get update && sudo apt-get upgrade
现在你准备好安装 PHP 了。这样做的命令毫不费力,直截了当。
sudo apt-get install php

通过终端安装PHP
这将安装最新版本的 PHP 和几个扩展。你可以用这段代码看看你有哪个版本。
php –v
如果想安装特定版本的 PHP,比如 PHP 7.4,怎么办?你需要使用 Ondřej Surý 的 PPA,即个人软件包存档。这是一个安全的方法来安装支持的旧版本的PHP。一次性运行这三个命令:
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update
现在系统会识别存档,并可以安装 PHP 7.4。键入以下命令:
sudo apt install php7.4
当然,你可以用你想要的任何 PHP 版本来代替这个数字。
这涵盖了基本的内容,但如果你在配置方面需要额外的帮助,Unix 下的 PHP 安装文档可以帮助你。
在Ubuntu上安装PHP
对于Ubuntu用户来说,只要你遵循上面的指南,就没有太多的具体问题。Ubuntu是最流行的发行版之一,所以大多数Linux指南实际上是为该系统制作的。
你可以选择的一个替代方案是下载一个LAMP堆栈。LAMP是指Linux、Apache、MySQL和PHP。它本质上是一个包含所有你需要的软件的捆绑包,以获得一个服务器的启动和运行。
虽然你可以分别手动下载这些工具,但你可以得到Taskel,这是一个可以一次性安装所有这些工具的软件包。只要在终端中连续运行这两个命令:
sudo tasksel install lamp-server
sudo apt install tasksel sudo tasksel install lamp-server

通过终端安装LAMP堆栈与Taskel
在CentOS 7上安装PHP
这个操作系统与其他Linux发行版有一点不同。在CentOS上,apt和apt-get命令不是安装软件的理想方式。相反,它使用yum,Yellowdog Updater Modified,一个更好的基于RHEL的操作系统的软件包管理器。
否则,你需要使用的命令是非常相似的。要更新你的软件包,请运行这个命令来代替:
sudo yum install epel-release && sudo yum update
至于其他命令,通常可以用yum代替 apt-get 。要安装PHP,使用这个命令。
sudo yum install php
诸如 php –v 等PHP命令在CentOS 7上应该是一样的,所以你不需要担心这个问题。
在Debian上安装PHP
类似Unix的操作系统的最后一个是Debian。这次只是有一些小问题,但上面列出的大多数命令应该都能正常工作。
对于Debian,你可以在终端命令中使用 apt-get 或 aptitude 。 aptitude 命令更全面一些,并提供一个菜单界面。至于你使用哪一个,则取决于个人的喜好,任何一个都可以完成工作。
因此,你可以不使用通常的 apt-get 命令,而是运行这个命令:
sudo aptitude install php
Debian可能很挑剔。如果你发现PHP不能解析或者扩展程序不能工作,请确保你已经更新了服务器的网络配置文件,并且正在加载扩展程序ini文件。
除了一些小事情,Debian的说明与其他Linux发行版的说明几乎是一样的。
如何在Windows上安装PHP
如果你使用的是 Windows 系统,与 macOS 和 Linux 不同,你不需要通过命令行来安装 PHP(尽管如果你愿意,这也是一个选项)。
从这里安装 PHP 的一个简单方法是启用 IIS,然后用 WebPI 来安装 PHP。启动 WebPI 后,你可以在Products标签下找到它。在你想要的版本上点击Add,然后点击Install。

启用Windows的IIS
你也可以下载 PHP for Windows 并手动配置它与 IIS 一起工作。如果你使用 IIS,请确保得到一个非线程安全的版本。
如果这一切都太复杂,你可以安装WampServer或XAMPP,因为它们包含了你开始使用Web服务器所需要的一切。Apache,一个数据库,当然还有PHP。
这些说明将适用于大多数现代Windows操作系统,如Windows 10、7和Vista。如果你使用的是旧版本的Windows,你应该看看传统的Windows安装文档。
Windows 可能需要一些额外的配置来使 PHP 正常工作,所以一定要查看推荐的 Windows 配置文档。你只需要做一些小的ini调整。
如何在macOS上安装PHP
大多数 macOS 系统都预装了 PHP,所以通常不需要手动安装。
你所需要做的就是取消对 Apache 配置文件 httpd.conf 中几行代码的注释,你通常可以在 /private/etc/apache2/httpd.conf 中找到。取消这两行的注释,去掉hashtag符号:
# AddModule mod_php5.c
# LoadModule php5_module libexec/httpd/libphp5.so # AddModule mod_php5.c
如果你不喜欢某些文件设置的默认值,你可能需要做额外的配置。否则,找到DocumentRoot,然后用这个代码创建并加载一个PHP文件:
<?php phpinfo(); ?>
你可以随时用 php –v 命令检查 PHP 的版本,以确保 PHP 被正确安装。
如果确实需要手动下载 PHP,那么应该安装 Homebrew 并使用这个简单的命令:
brew install php
关于PHP扩展的一切
一旦你已经有了PHP并开始运行,考虑一下扩展是个好主意。这些编译过的库可以增加各种额外的、有用的功能。可以把它们看作是在 PHP 已经提供的功能上增加的插件。其中一些是运行PHP框架所需要的,比如Laravel和Symfony。
虽然你完全可以自己编写所有的代码而不去碰扩展,但如果有广泛使用的捷径来使你的生活更容易,就没有理由自己去做。
PHP已经有了几十个内置的扩展,其中有些必须手动启用,有些可以马上开始使用。你也可以通过像 PECL 这样的网站来安装 PHP 扩展,它承载了数百个第三方软件包。
PHP手册中也提供了许多扩展的文档,所以你可以掌握使用它们的方法。
不知道从哪里开始?下面是一些流行的PHP扩展的一小部分:
- Apache:Apache是WordPress推荐的一个广泛使用的Web服务器软件,因为它与WordPress和PHP的兼容性很好。Apache与PHP捆绑在一起,所以你不需要手动安装它。
- .NET:.NET是一个流行的软件框架,你可以用它来构建网络应用程序等。它可以与多种语言一起使用,包括PHP。你可能还对PeachPie感兴趣,它允许你在.NET中运行PHP代码。
- MySQLi:作为旧的MySQL扩展的更好版本,MySQLi使你能够与MySQL数据库软件一起工作。这个是帮助你建立数据库的必备工具。
每当你安装一个扩展时,你需要取消对它的注释。只要打开php.ini,删除 extension=extensionname 前面的分号 (;)。
如果你想使你的代码标准化并使用预制库进行构建,你也应该看看这些PHP框架。它们是开始用PHP开发Web应用的一个好方法。
小结
不管你使用的是什么操作系统,安装PHP并不是一个多么困难的过程。如果你想做一个WordPress的测试服务器,你会需要它。有抱负的PHP程序员会发现建立一个Web服务器并在其上安装PHP是一个很好的练习。
确保你通过命令行或从其官方网站下载PHP。你可以得到最新的稳定版本的PHP,也可以得到与WordPress兼容的任何其他版本。
创建和定制WordPress导航菜单的深入浅出教程

一个WordPress网站如果没有菜单和子菜单,就不算什么了。在WordPress内根据你的喜好定制这些菜单也是很简单的。因此,你的WordPress菜单是一个 “front line”工具,以获得一个高的搜索排名,并保持访问者在网站上。
WordPress内部的专用屏幕掩盖了你的菜单可以有多复杂。你也能够在你的网站上的几个位置显示菜单。如果你有编码技能,你可以定制你的WordPress菜单,几乎有无限的可能性。
在这篇文章中,我们将给你一个创建WordPress菜单的深入指南。我们还将向你展示如何利用该功能并以几种不同的方式增强它。
剖析WordPress的菜单
对于不熟悉的人来说,WordPress菜单通常是一个链接(包括下拉)的集合。它是一个直接的功能,只是你的网站骨架中的一个 “椎体”。

WordPress网站菜单示例
我们将在下一节中更详细地讨论在网站上看到的菜单。现在,你要知道,它们可以放在你想显示的任何地方。你可能只有几个预选的选项(基于小部件的区域)。不过,从技术上讲,菜单可以放在任何地方。
当然,WordPress的菜单对于导航网站是最重要的。如果你有一个清晰明确的导航菜单,这将有助于用户在你的网站上浏览,它将使你的跳出率下降。
它们也有另一个目的:你的菜单有助于你的搜索引擎优化(SEO)。优化WordPress菜单以利于SEO,更多的是关于舍弃什么,而不是放进什么。对于初学者来说,你可以取消一些元素–如标签云–并保持你所包含的链接的数量较少。
虽然谷歌允许你在一个页面上最多添加250个链接,但保持你的 “链接价值“是至关重要的。因此,减少外部链接的数量从长远来看对你有好处。
WordPress菜单结构的不同类型
你可能已经明白,根据你的应用程序的需要,你可以选择不同的WordPress菜单结构。
例如,标题菜单是最常见的,因为它们处理的是主要的网站导航。你也会经常看到主导航上方的小菜单,因为这是社交媒体图标、搜索栏等的绝佳位置。
SAU/CAL的网站有一个 “飞入 “菜单,包括导航和社交链接:

SAU/CAL网站飞入式菜单
这个菜单表明,WordPress的菜单有比导航网站更多的使用情况。使用WordPress的内置功能(后面会详细介绍),你可以为你需要的几乎任何东西创建一个菜单。
与页眉导航一样流行的是页脚。你经常会用这个区域为向下滚动的用户重复你的主要导航。此外,它也是为你的产品和服务提供更多基于上下文的链接的绝佳场所:

闪电博底部菜单
如果网站使用侧边栏,你还会看到侧边栏内的菜单:

一个侧边栏导航的例子
虽然在很多情况下你不会在这里看到主要导航,但它是一个传统的社交链接、博客文章档案和更多内容的地方。
如何创建一个自定义的WordPress菜单(3种方法)
创建一个WordPress菜单是一个简单的过程,不管你的专业水平如何。有三种主要的方法来完成这项工作:使用WordPress的内置功能;安装一个合适的插件或用代码来弄脏你的手。
接下来,我们将向你展示如何使用这三种方法创建一个WordPress菜单。
1. 使用WordPress的内置功能来创建你的菜单
WordPress有内置的工具来帮助你创建一个菜单。除了最新的用户之外,WordPress管理中的一个专门屏幕对所有的用户来说都是熟悉的。

WordPress的菜单界面
当然,使用本地功能来创建你的WordPress菜单有许多好处。首先,你与你的网站有完全的兼容性。而且,你可以使用一个熟悉的界面和本地工具来建立你的菜单。
要达到这个目的,请前往WordPress内的外观>菜单页面:

WordPress的菜单链接
这个屏幕分为几个不同的部分。在顶部,你会发现选择当前菜单或创建一个新菜单的选项:

菜单选择下拉
如果你决定建立一个新的菜单,给它起个名字,并查看菜单设置部分。

菜单设置选项
这里有很多复选框,但你有两个主要决定要做:
- 自动添加顶级页面到菜单中。 这里的 “顶级 “是指你在WordPress中创建的不是其他页面的子页面的页面。例如,一篇博客文章不是一个顶级页面,因为在许多情况下它会有一个父级档案页(例如/blog)。另一方面,一个联系页面通常是顶级的,因为它通常不会有一个父页面。
- 菜单位置。 每个主题都会有它的菜单位置。除非你改变了主题的核心文件,否则主题开发者已经硬编码了这些菜单位置。有些主题可能允许你通过其设置来定制它们。
一旦你准备好了,点击创建菜单按钮。屏幕将刷新,并将显示你在你的新菜单中。接下来,看一下屏幕的左侧:

菜单项的手风琴式菜单
这个屏幕列出了你网站上所有的帖子、页面、分类法和其他可链接的资产。你通过勾选左边的方框来建立你的菜单,然后点击添加到菜单按钮。
这将把它们移到菜单屏幕的中央部分:

在菜单结构部分拖放项目
在这里,你可以把菜单项目拖到合适的位置。如果你点击每个项目旁边的扩展箭头,你还可以为你的菜单项目设置一个标签,或者删除它。

展开一个菜单项
一旦你点击了保存菜单,你就可以开始了。不过,如果你展开屏幕顶部的屏幕选项菜单,你可以对你的WordPress菜单做更多事情:

显示选项面板
显示元素组可以让你在左边的侧边栏显示菜单元框。相比之下,显示高级菜单属性组可以显示列表项的链接目标、描述和CSS类。
菜单屏幕还有一个值得注意的方面。自定义链接框让你设置一个你选择的链接,而不是你网站上预定义的页面:

自定义链接框
这个选项是你如何将社交媒体链接添加到你的WordPress菜单中。该平台将根据你选择的网站为你拉出正确的图标,让你有机会为你选择的网站提供显示良好的标识。
2. 使用一个插件来创建你的自定义WordPress菜单
为WordPress添加功能的直接解决方案是通过插件。上一节已经介绍了为什么WordPress的原生选项几乎是你所需要的全部,但是插件可以扩展这个功能。
有一个问题是,你是否需要一个专门的(和额外的)插件来创建一个WordPress菜单,尽管这样做有很多好的理由。对于初学者来说,你经常会根据你在默认设置下无法访问的风格来制作一个菜单。特定的响应式设计、”巨型菜单 “等等,都可以通过插件来实现。
更重要的是,你可以使用一个专门的编辑器建立菜单,并在很多情况下从预设模板中选择。再加上广泛的定制选项,你有一个 “无代码 “解决方案,将提供一个适合你的网站的WordPress菜单。
例如,Max Mega Menu插件在你能实现的方面没有任何意外:

Max Mega Menu插件
一旦它被安装和激活,你会在WordPress内发现一个新的Mega Menu面板:

WordPress内的Menu Locations链接
如果你看一下Menu Locations屏幕,你会发现有更多的自定义功能供你使用:

Max Mega Menu的菜单位置屏幕
你还可以应用菜单主题,并以类似于市场上一些最好的页面生成器的范围来编辑它们:

Max Mega Menu中的 “菜单主题 “屏幕
我们可以在这里挖掘更多的东西,尽管我们会重复自己。我们鼓励你查看我们以前关于WordPress菜单插件的文章。我们详细介绍了如何选择适合你的插件以及如何使用它。
3. 编写代码来创建你的自定义WordPress菜单
为你自己的WordPress菜单编码是一个可靠的方法,可以实现你的勇敢者的目标(或者如果你是一个创建新的WordPress主题的开发者)。当然,你不会每天都打开一个代码编辑器来添加一个菜单。为此,你会使用本地的WordPress工具(或者可能是一个插件)。
也就是说,如果你想开发主题,学习如何为WordPress菜单编码是一个重要的要求。成功有四个部分:
- 注册你的菜单。
- 在前端显示WordPress的菜单。
- 在你的菜单或其项目中显示额外的内容。
- 定义一个回调。
我们假设你对代码编辑器很顺手,你有一个可以工作的开发环境,而且你的技能很敏锐。如果你还没有一个主题可以使用,你可以使用WordPress的默认选项,或者从我们的最快WordPress主题列表中挑选一个。
当你准备好的时候,你要打开主题的 functions.php 文件。注意,这与一般WordPress的同名文件不同。在这里,你需要注册你的菜单。换句话说,你必须告诉WordPress在外观>菜单页面上显示什么。要做到这一点,你需要使用register_nav_menus()函数。
register_nav_menus(
array(
‘header’ => __( ‘Header Menu’ ),
‘other’ => __( ‘Other Menu’ )
)
);
}
add_action( ‘init’, ‘register_my_menus’ );
function register_my_menus() {
register_nav_menus(
array(
'header' => __( 'Header Menu' ),
'other' => __( 'Other Menu' )
)
);
}
add_action( 'init', 'register_my_menus' );
这段代码告诉WordPress内的Manage Locations标签显示两个菜单:Header Menu和Other Menu:

在WordPress中注册菜单
接下来,你必须使用wp_nav_menu()函数来显示你的菜单。你要把它添加到与你想显示菜单的地方相对应的模板文件中。在我们的例子中,我们要用头,所以我们要在主题的header.php文件中添加以下代码:
wp_nav_menu( array( 'theme_location' => 'header' ) );
可能是这段代码被包裹在 if 语句中,和你的其他一些菜单一起,所以你要遵循你发现的惯例。
在这一点上,你可以像其他的菜单一样在WordPress中工作。虽然,你可能也想考虑为你的菜单项添加额外的内容。例如,你可以扩大定义的数组,以包括将在输出时呈现的HTML标签:
array(
‘menu’ => ‘primary’,
‘link_before’ => ”,
‘link_after’ => ”,
)
);
wp_nav_menu( array( 'menu' => 'primary', 'link_before' => '', 'link_after' => '', ) );
你在这里的最后一项任务是定义一个回调。默认情况下,当没有找到指定的菜单时,WordPress会显示一个填充的菜单。作为一种选择,当没有选择自定义菜单时,WordPress会显示一个页面的菜单。如果这不是你想要的动作,你可以为 theme-location 参数设置一个不同的参数,也可以添加一个 fallback_cb 参数:
array(
‘menu’ => ‘primary’,
// do not fall back to first non-empty menu
‘theme_location’ => ‘__no_such_location’,
// do not fall back to wp_page_menu()
‘fallback_cb’ => false
)
);
wp_nav_menu( array( 'menu' => 'primary', // do not fall back to first non-empty menu 'theme_location' => '__no_such_location', // do not fall back to wp_page_menu() 'fallback_cb' => false ) );
一旦你理解了如何创建一个WordPress菜单,你就可以开始增强其功能。我们将在最后一节看一下这个问题,为WordPress创建一个自定义的菜单元框。
如何增强你的WordPress菜单
因为这一部分是高级的,我们在继续之前会做一些假设:
- 你知道如何用PHP创建一个WordPress菜单。
- 你的PHP技能足够好,可以跟随一些高级主题。
- 你知道如何注册和初始化一个WordPress插件。
这超出了本文的范围,但你可以使用WordPress插件模板生成器来创建一个新的、标准化的插件模板。
网络开发中的Git:了解一个项目的典型工作流程

网络开发与协作有着内在的联系。大多数时候,你会和其他开发者一起工作,即使没有,Git 也能在很多其他方面帮助你。
Git 是控制我们制作的应用程序的版本的软件。单打独斗的开发者、大公司,甚至是世界上最大的开源项目 Linux 都在使用它。
作为一个网络开发者,知道如何正确使用Git进行网络开发是极其重要的。我们不只是在谈论 “git add”、”git commit “和 “git push”。你应该知道用Git创建一个web项目的整个工作流程。
为什么要使用Git?
这些只是开始使用 Git 的部分原因:
- 组织:与其用v1、v2、v3等文件夹来管理项目,不如用一个专门的数据库来存储所有版本的文件。
- 协作:Git 可以让你和其他人同时在同一个项目上工作而不产生冲突。
- 开源:Git是开源的,但它也是我们用来协作和创造伟大的开源软件的工具。任何人都可以在GitHub或Bitbucket等平台上向开源项目提出拉取请求。
- 平台的灵活性:如今,你有许多不同的Git托管服务可以选择,比如Gitlab、GitHub、Bitbucket和SourceForge。你甚至可以为你的所有项目使用一个自我托管的解决方案。
- 轻松备份:轻松地撤销错误,永远不会丢失你的项目代码库。
我们已经提过一两次GitHub这个词了,那么Git和GitHub之间有什么区别?
如果你对 Git 完全陌生,可能会感到困惑。简单地说,Git 和 GitHub 是相关但不同的工具。
Git 是我们用来控制文件变化的版本控制系统(VCS),而 GitHub 是我们用来在线存储项目文件及其 Git 历史的服务(位于项目的 .git/ 文件夹中)。
Git安装在本地,在你的机器上,如果没有像GitHub或GitLab这样的托管服务,就很难与其他开发者进行协作。
GitHub通过增加其他改善协作的功能,如克隆、分叉和合并,为Git增压。这两个工具结合在一起,为你带来了一个相对友好的生态系统,可以开发、管理并向其他人展示你的项目。
专注于开发,而不是托管。给我们的管理应用程序托管一个旋转。
大的IaaS供应商倾向于将事情过度复杂化。跳过过时的仪表盘、臃肿的产品线和令人困惑的内置功能,你将不会使用。在几分钟内部署你的代码。另外,你的第一个月可以得到20美元的优惠。
网页开发的基本 Git 工作流程
在接下来的章节中,你将通过亲身实践了解更多关于网页开发的 Git 工作流程。
安装要求
如果你还没有安装Git,现在是个好时机。它很容易安装,在大多数操作系统上都可以使用。
从官方下载页面下载,如果你使用的是Linux或macOS,则可以用软件包管理器安装它:

Git下载页面
为了测试安装是否顺利,在Linux或macOS上通过在应用程序菜单中搜索 “Terminal “来启动终端,或者在Windows上打开Git bash(默认安装有Git)。
然后输入:
git --version

Git版本
如果你得到一个Git版本作为回应,你就可以开始了。
我们还需要一个GitHub账户,所以请确保注册或登录GitHub:

GitHub的注册页面
一旦你安装了Git并登录了GitHub账户,就可以进入下一节了。
协作项目的基本Git工作流程
如前所述,大部分时间你都不会单独开发项目。协作是一项关键技能,而Git和GitHub可以帮助我们把它变成一个简单而有效的过程。
一个Git项目的典型工作流程是这样的:
- 通过克隆版本库或 repo 获取项目的本地副本。如果你要合作,你应该先分支这个 repo。
- 创建一个分支,用你要做的功能的一个代表性名称。
- 编辑该项目。
- 在你的本地机器上提交修改。
- 推送修改内容到远程版本库。
- 向原始版本创建一个拉取请求。
- 合并和解决原始 repo 的主分支中的冲突。
教程
现在是我们动手的时候了!
在本指南中,你将创建一个简单的HTML网站。为了实用起见,你将把HTML网站仓库的基本项目分支到你的GitHub账户。所有公共可用的软件库都可以这样做。
Info
分支是一个独立的版本库副本,你可以在不影响原项目的情况下管理和修改。另一方面,克隆一个仓库,只是创建一个文件的本地副本。
要分支这个HTML网站,请到这个GitHub仓库,点击位于页面右上方的Fork按钮:

GitHub分支
现在你有一个原始版本的分叉,只在你的GitHub账户上可用。在你开始提交修改之前,它是完全一样的 repo。
正如你所看到的,分叉一个公共的 repo 只需要几秒钟。这对开源项目来说是很好的,但请记住,如果你的组织有一个私有的 repo,在尝试分叉之前,你需要作为一个贡献者加入。
现在是时候把你的分叉带到你的本地机器上了。要做到这一点,你需要用 git clone 命令来克隆它,它可以从远程服务器上获取 Git 仓库:
git clone remote_url
你需要把 remote_url 替换成你的分叉的URL。要获得GitHub repo的确切URL,请进入其页面并点击代码。然后选择SSH,并复制它给你的链接:

SSH URL.
你要运行的克隆分支 repo 的命令是:
git clone git@github.com:yourusername/HTML-site.git
当你克隆一个 repo 时,你会得到一个带有其名称的文件夹。这个文件夹里有项目的源代码(在这里是指HTML网站)和Git repo,它位于一个名为.git的文件夹里。
你可以通过在图形化文件管理器中打开新的文件夹,或者在终端用 ls 或 dir 命令直接列出这些文件,来查看新目录中的文件列表:
ls HTML-site/
# Windows
dir HTML-site
.git images .gitignore index.html LICENSE README.md styles.css
# Linux/macOS ls HTML-site/ # Windows dir HTML-site .git images .gitignore index.html LICENSE README.md styles.css
这个HTML网站非常简单。它使用了Bootstrap的实用功能和一些来自Unsplash的图片,在那里你可以为你的网站下载免费图片。
如果你在浏览器中打开index.html文件,你会看到一个有一些图片的简单页面:

我们正在创建的简单网页。
是时候玩一玩这个项目了。它感觉非常空洞,也许一个带有网站名称的标题可以增强用户体验。
要做到这一点,进入HTML-site目录,创建一个名为 header 的分支。在这个新的分支中,我们可以编辑所有的文件,并尽可能多地实现代码,因为这不会影响主(原始)分支。
运行以下命令:
git checkout -b header
这将创建一个名为 “header “的分支,并在这之后将你切换到它。这相当于:
git checkout header
git branch header git checkout header
为了确认一切顺利,运行:
# On branch header
# nothing to commit, working tree clean
git status # On branch header # nothing to commit, working tree clean
你会看到你已经从 “主 “分支转移到 “头 “分支,但工作树仍然是干净的,因为我们没有编辑过任何文件。
在你喜欢的代码编辑器中,打开分支项目中的index.html文件。这个文件包括一些指向Bootstrap 5的链接,所以我们可以利用该框架的即用型组件。
在index.html文件的 <body> 标签内和图片容器上方添加以下代码:
<nav class=”navbar navbar-light bg-light”>
<div class=”container-fluid”>
<span class=”navbar-brand mb-0 h1″>HTML site</span>
</div>
</nav>
</header>
<header> <nav class="navbar navbar-light bg-light"> <div class="container-fluid"> <span class="navbar-brand mb-0 h1">HTML site</span> </div> </nav> </header>

我们的网页上有一个新的页眉。
看起来好多了! 你可以自由地进行其他分支和修改。
一旦你完成了对项目的编辑,就该把所有的修改提交到你的本地版本。在项目目录中,在终端键入以下内容:
git commit -m “Added simple header in index.html file”
git add --all git commit -m "Added simple header in index.html file"
重要的
所有的Git提交信息都必须是清晰而有意义的。每当你添加一个提交,你和你的队友都应该能够识别该提交中发生了什么,这样如果出现了错误,你就可以很容易地修复它。
当你刚开始一个项目时,有描述性的提交信息是很常见的,但随着时间的推移和重点的转移,信息的质量往往会下降。请确保保持良好的命名实践。
现在你已经向本地版本库提交了文件(现在还只能在你的电脑上使用),现在是时候把它推送到远程版本库了。
如果你试图像平常一样推送提交,那是行不通的,因为你现在是在头层分支上工作。你需要为 header 设置上游分支:
git push --set-upstream origin header
从2021年8月13日开始,GitHub要求使用SSH认证,所以请确保你的密钥设置正确。
在这之后,你应该可以在你的分叉仓库中看到一个名为 header 的新分支(例如:https://github.com/yourusername/HTML-site/branches):

“header” 分支.
要向原始版本创建一个拉动请求,请点击 “Compare“,在Active branches部分。
这将引导你进入一个拉取请求,你需要选择你想与哪个分支(原始分支或你的分叉)合并。默认情况下,它显示的是与基本仓库合并的选项:

在GitHub上创建拉动请求
一旦你点击了拉动请求选项,你就需要对所做的修改写一个简短的描述,就像你先前的提交一样。再一次,尽量简明扼要,但要描述清楚:

编写拉动请求信息
点击Create pull request按钮,等待基础仓库所有者接受或反馈你的修改。
祝贺你 – 你刚刚完成了网页开发中常见的 Git 工作流程的所有步骤。
这是一个非常基本的例子,但其逻辑可以延伸到各种规模的项目中。请确保你在更大的合作项目中也能严格执行这个工作流程。
如何在Kinsta使用Git
如果你是Kinsta的用户,你已经有两种方法可以在MyKinsta门户中使用Git和GitHub。
我们先来看看第一种方法。你可以很容易地通过SSH进入并从任何Git托管服务(如GitHub、Gitlab或Bitbucket)中提取一个Repo。
要做到这一点,进入你的Sites标签,选择一个网站,然后进入你的SSH细节部分,并复制SSH终端命令。

SSH细节部分
通过SSH登录到你的网站,在你的终端粘贴上面的命令,然后进入你的网站的公共文件夹(位于/www/yoursitename/下)。这里是你所有WordPress文件的位置,所以你可以拉下一个Git repo,里面有你一直在工作的定制主题或插件。
下面是你如何用一个简单的命令拉下一个Git repo:
ssh yourkinstasite@1.2.3.4 -p PORT "cd /www/my_site/public && git pull https://github.com/user/repo.git"
重要
SSH应该由高级用户使用。如果你不熟练操作,不要犹豫,先联系Kinsta支持。
现在,引入Kinsta新的GitHub部署功能,你可以从GitHub仓库部署一个完整的WordPress网站。
你的GitHub仓库应该包括WordPress核心文件的副本,当然还有你的网站在wp-content文件夹下的内容。
让我们快速看一下这个选项。
去你公司的一个网站,创建一个暂存环境。这不会超过两分钟的时间。

暂存环境
一旦你进入了你的暂存站点,进入Deployment选项卡,点击Begin setup按钮。你会看到一个GitHub模版,让Kinsta与你的GitHub账户连接。

GitHub部署标签
现在,选择你要拉动你的网站的 repo。

将Kinsta连接到GitHub。
最后,部署你的网站,并通过你的暂存网站URL访问它。

立即部署按钮。
这项功能目前还处于Beta阶段,但很快每个Kinsta用户都会有机会使用它。
如果你知道如何很好地使用Git和Kinsta,那么它们将是一个强大的组合。
小结
如今,Git是网络开发中必须学习的工具,因为大多数时候你都会与他人合作,以创建最好的项目。
在这篇文章中,我们讨论了在项目中使用Git的一些重要原因,并向你展示了在Git repo中进行协作的基本工作流程。
什么是WordPress版本控制及最佳解决方案

WordPress版本控制可以帮助你跟踪你的WordPress网站的变化,监测正在发生的事情,并在需要时回滚这些变化。这些变化可能是简单的调整,比如对帖子的编辑,也可能是更多的技术变化,比如对网站代码库的编辑。
在这篇文章中,我们将解释更多关于什么是版本控制,以及它如何适用于WordPress。然后,我们将探讨一些你可以用来在你的WordPress网站上实施版本控制的工具。
什么是WordPress版本控制?
版本控制系统跟踪一个(或多个)文件的变化,以便你可以看到事情是如何变化的,如果需要,可以恢复到以前的版本。
应用于WordPress,版本控制让你跟踪你或其他人对你的网站所做的修改。
在WordPress的上下文中,版本控制可以跟踪以下行动:
- 更新或发布一个帖子。
- 安装或卸载一个新的插件。
- 改变你的WordPress主题。
- 更新你的核心软件或任何主题或插件。
你不仅可以看到这些变化,而且还可以在需要时撤销它们或回滚到以前的版本。
在开发的意义上,版本控制也可以帮助开发者管理代码库的变化,让他们在 “合并 “到主代码库之前克隆一些代码段来进行工作。根据你的WordPress网站的复杂性,你可能也会发现这个功能很有帮助。
在WordPress中,版本控制的一个非常有限的例子是WordPress的内置修订功能,它可以让你比较一个帖子或页面的变化,并在需要时恢复以前的版本:

内置的WordPress修订功能
但是,你也可以实施更强大的系统,而且,根据你使用的WordPress版本控制系统,你将能够跟踪你的网站的文件和网站的数据库的变化。
WordPress版本控制的好处是什么?
设置WordPress版本控制有几个大的好处。
首先,版本控制让你在对你的网站进行修改时更有信心。做了一个改动,把一些东西搞乱了?不用担心,你可以撤消它,恢复到你网站的工作版本。
第二,如果你有一个帮助你的WordPress网站的团队,你将能够更有效地一起工作,因为你可以跟踪正在发生的一切。此外,如果你使用一种支持分支和合并的方法,开发人员将能够复制你的网站的部分代码来进行工作,然后在准备就绪时将这些代码 “合并 “到你的实时网站。
最后,版本控制帮助你监控你的网站正在发生的事情。例如,版本控制让你看到你的一个编辑是否更新了一个已经发布的帖子。如果他们这样做了,你可以看到他们的改动,并在需要时轻松地回滚。
所以,现在你对在你的网站上设置版本控制有了更多的了解,让我们来看看WordPress版本控制的一些解决方案。
WordPress版本控制的最佳选择
有几种WordPress控制的解决方案,取决于你的技术知识和你希望你的版本控制系统有多全面。
下面是我们将详细介绍的WordPress版本控制解决方案:
- Git – 有几种方法可以让你在WordPress中使用Git,包括像Github、GitLab、Bitbucket等托管仓库。要了解更多,请确保阅读我们关于Git与Github的指南。
- VersionPress插件 – 它也实现了Git,但以一种更自然的方式,尽管它仍在测试阶段。
- WP Rollback – 一个非常简单的系统,用于回滚主题和插件的更新。
- Bedrock – 由Root团队创建,Bedrock的设置方式可以让你轻松维护一个版本控制的仓库。
当然,你也可以利用WordPress内置的Revisions系统来跟踪和撤销修改。
如何在WordPress中使用Git
Git是一个开源的分布式版本控制系统,由Linus Torvalds在2005年创建。它的技术性较强,但它是最流行的版本控制系统之一,被所有类型的开发者使用。也就是说,它不是专门针对WordPress的。
通常情况下,你想在GitHub、Bitbucket或GitLab这样的托管仓库中管理你的WordPress网站的代码。然后,你可以根据需要将你的网站从该仓库部署到你的实时服务器。
如果你想在WordPress中使用Git,你有几个不同的选择。
首先,如果你在Kinsta托管,我们有Git客户端,所以你可以通过SSH进入并从任何服务中提取你的Git仓库,包括GitHub、GitLab和Bitbucket。
或者,还有其他一些针对WordPress的和通用的工具来帮助你从Git上进行部署。
如果你想要一个针对WordPress的解决方案,两个不错的选择是:
- WP Pusher – 让你从任何Git仓库部署主题和插件。注意,这个工具专门针对主题和插件。
- Revisr – 提供一个更全面的方法来使用WordPress的Git。你可以在一个Git仓库中跟踪你的整个网站,包括你的数据库。你也可以从你的WordPress仪表盘中提交修改,恢复文件,并推/拉修改到一个远程仓库(如Bitbucket或GitHub)。

Revisr插件的界面
而在普通方面,你也可以使用Beanstalk和DeployBot等工具。
如何使用VersionPress进行版本控制
VersionPress是一个开源项目,旨在通过对网站的文件和数据库进行版本控制,”将Git的全部力量带到WordPress”。虽然它也依赖Git,但VersionPress有自己的部分,因为它的做法与上面的方法有点不同。
VersionPress的独特之处在于,它跟踪每一个细小的变化,并以自然的人类语言进行记录。例如,VersionPress不只是记录数据库的变化,而是告诉你有人 “更新了Hello World!”的帖子。很明显,这使得Git在WordPress网站的背景下变得更加有用和易于使用。
例如,将VersionPress中的操作列表与上面Revisr截图中的操作列表进行比较。看到区别了吗?

VersionPress的界面
它还为你提供了一个选项,可以撤销或回滚任何这些变化,备份你的网站,创建暂存环境和合并数据库,推送到托管的Git存储库,等等。
虽然这听起来很不错,但重要的是要注意VersionPress仍然被认为是一个 “开发者预览版”。开发者说,你不应该在生产网站上使用它。
要安装VersionPress,你需要在你的服务器上安装Git并启用proc_open()。
如何使用WP Rollback来撤销更新
WP Rollback并不像之前的解决方案那么全面,它只适用于WordPress.org的主题和插件。不过,在更有限的基础上,它确实是一个非常有用的版本控制工具。
你是否曾经更新过一个WordPress主题或插件,但它却破坏了你网站上的某些东西?
好吧,首先,你应该使用一个暂存站点,这样就不会发生这种情况了!但是,如果你是在一个网站上运行更新,那么你就应该使用一个暂存站点。但是,如果你在一个真实的网站上运行更新,并且出了问题,能够回滚到之前的版本是很有帮助的,至少在你能找出问题所在之前是这样。
为了帮助你做到这一点,WP Rollback在你网站的插件界面上增加了一个新的Rollback按钮,让你可以把任何WordPress主题或插件 “回滚 “到以前的版本。

新的Rollback选项
你可以选择你想恢复的确切版本:

版本控制让你对你网站的代码有足够的控制
小结
版本控制可以帮助你跟踪你的WordPress网站的变化,这样你就可以保持对正在发生的事情的关注,并在需要时回滚。
如果你在一个团队中工作,版本控制还可以通过一个分支和合并的系统帮助你采用更有效的工作流程。团队成员可以复制你的网站的一个特定部分来工作,然后在准备好的时候把它 “合并 “到主代码中。
对于WordPress,你有几个版本控制的选择,取决于你的需求和技术知识。
对于开发者来说,Git是一个很好的版本控制的选择。Kinsta支持Git客户端,你也可以使用WP Pusher(用于主题和插件)、Revisr、Beanstalk和DeployBot等工具,从GitHub等托管的Git存储库进行部署。
对于更简单、技术含量更低的实施,你可以选择内置的WordPress修订功能和/或WP Rollback插件。
最后,虽然它还没有准备好,但VersionPress提供了最针对WordPress的Git实现,绝对是一个值得关注的项目。
你对如何开始使用WordPress的版本控制有什么问题吗?请在评论中告诉我们。
