devuri / wp-env-config
Requires
- php: ^7.4 || ^8.0
- defuse/php-encryption: ^2.4
- devuri/cpt-meta-box: ^0.4
- devuri/dot-access: ^0.2.2
- devuri/encryption: ^0.3
- devuri/secure-password: ^0.1
- devuri/uuid-generator: ^0.0.1
- filp/whoops: ^2.15
- johnpbloch/wordpress: ^6.2
- psr/log: ^1.1
- symfony/error-handler: ^5.0
- symfony/filesystem: ^5.4
- symfony/var-dumper: ^5.4
- vlucas/phpdotenv: ^5.2
Requires (Dev)
- 10up/phpcs-composer: dev-master
- brain/monkey: ^2.6
- php-stubs/wordpress-stubs: ^6.0
- phpstan/phpstan: ^1.8
- phpstan/phpstan-strict-rules: ^1.3
- phpunit/phpunit: ^9.5
- spatie/ssh: ^1.9
- szepeviktor/phpstan-wordpress: ^1.1
- vimeo/psalm: ^4.24
- yoast/phpunit-polyfills: ^1.0 || ^2.0
Suggests
- aaemnnosttv/wp-sqlite-db: A drop-in for using a SQLite database with WordPress.
- daniel-zahariev/php-aws-ses: Send emails via Amazon Simple Email Service (SES).
- embed/embed: If you want to replace WP_oEmbed requires PHP 7.4
- humanmade/aws-ses-wp-mail: AWS SES is a very simple UI-less plugin for sending wp emails via AWS SES.
- humanmade/s3-uploads: Store Uploads on Amazon S3
- ibericode/vat: PHP library to help you deal with Europe's VAT rules.
- itsgoingd/clockwork: php dev tools in your browser.
- latitude/latitude: SQL query builder with zero dependencies.
- phpseclib/phpseclib: Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.
- predis/predis: A flexible and feature-complete Redis client for PHP.
- spatie/ssh: execute commands over an SSH connection
- yahnis-elsts/wp-update-server: Custom update API server.
- dev-master
- v3.3.0
- v3.2.0
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.1
- v3.0.0
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.0
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.5
- v1.0.4
- v1.0.3
- v0.30.9
- v0.30.8
- v0.30.7
- v0.30.6
- v0.30.5
- v0.30.4
- v0.30.3
- v0.30.2
- v0.30.1
- v0.20.2
- v0.20.1
- v0.20
- v0.19
- v0.17
- v0.16
- v0.15
- v0.13
- v0.12.04
- v0.12.3
- v0.11.1
- v0.10.1
- 0.9.1
- 0.8.9
- 0.8.6
- 0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.7
- v0.7.6
- v0.7.5
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.6
- v0.6.5
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- 0.5.7
- 0.5.6
- v0.5.1
- v0.5.0
- 0.4.1
- v0.4.0
- 0.3.1
- 0.3.0
- 0.2.6
- 0.2.3
- 0.2.1
- 0.1.0
- 0.0.4
This package is auto-updated.
Last update: 2024-07-19 20:50:33 UTC
README
WordPress环境配置
介绍
wp-env-config
是一个小巧而强大的包,简化了在WordPress中定义配置常量的过程。通过利用PHP dotenv,此包允许您将敏感的配置数据安全地存储在环境变量中,这是根据十二要素应用程序方法构建和部署软件的最佳实践。
注意 此仓库包含wp-env-config的基本组件。如果您正在开发应用程序,请使用此仓库中的wp-env-app:wp-env-app。
安装
要使用 wp-env-config
,您可以通过Composer安装它。在终端中运行以下命令
composer create-project devuri/wp-env-app blog
或者对于现有项目
composer require devuri/wp-env-config
或者,您可以将 devuri/wp-env-config
添加到项目的 composer.json
文件中
"require": { "devuri/wp-env-config": "^0.5" }
安装完成后,您可以在WordPress项目中开始使用此包。
# This is how the structure might look.
├── .env
├── wp-config.php
├── composer.json
├── composer.lock
├── LICENSE
├── public/
│ ├── index.php
│ ├── wp-admin/
│ ├── wp-content/
│ ├── wp-includes/
│ ├── .htaccess
│ ├── robots.txt
│ └── ...
└── vendor/
用法
要开始使用,请在项目的根目录中创建一个 .env
文件。在此文件中,定义您希望用作配置常量的环境变量,并根据需要更新数据库凭证和其他设置。
WP_HOME='https://example.com' WP_SITEURL="${WP_HOME}" WP_ENVIRONMENT_TYPE='production' DEVELOPER_ADMIN='0' MEMORY_LIMIT='256M' MAX_MEMORY_LIMIT='256M' DB_NAME=wp_dbName DB_USER=root DB_PASSWORD= DB_HOST=localhost DB_PREFIX=wp_
环境变量完整列表 环境变量
然后,在您的 wp-config.php 文件中,添加以下代码
<?php use Urisoft\App\Setup; require_once __FILE__ . '/vendor/autoload.php'; /** * The base configuration for WordPress * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ Setup::init(__DIR__)->config(); // production /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = env('DB_PREFIX'); if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } // Sets up WordPress. require_once ABSPATH . 'wp-settings.php';
这将从 .env
文件中加载环境变量并将它们定义为配置常量。
# the following files are supported (in that order) env .env .env.secure .env.prod .env.staging .env.dev .env.debug .env.local # By default, Dotenv will stop looking for files as soon as it finds one.
您可以使用这种方法定义所需的任何数量的常量。
设置选项和环境
Setup::init(__DIR__)->config(); // production
Setup::init(__DIR__)->config('development'); // development
Setup::init(__DIR__)->config('staging'); // staging
Setup::init(__DIR__)->config('production'); // production
Setup::init(__DIR__)->config('secure'); // secure
Setup::init(__DIR__)->config('development', false )->environment()->database()->salts()->apply();
dump( Setup::init(__DIR__)->getEnvironment() ); // Get the current Environment setup.
环境常量。
调试必须开启,并将 'development' 设置为 .env 文件中的 WP_ENVIRONMENT_TYPE。
dump( Setup::init(__DIR__)->get_constant_map() ); // Display a list of constants defined by Setup.
这将输出以下内容
"WP_ENVIRONMENT_TYPE" => "development" "WP_DEBUG" => true "SAVEQUERIES" => true "WP_DEBUG_DISPLAY" => true "WP_DISABLE_FATAL_ERROR_HANDLER" => true "SCRIPT_DEBUG" => true "WP_DEBUG_LOG" => true "DB_NAME" => "" "DB_USER" => "" "DB_PASSWORD" => "" "DB_HOST" => "localhost" "DB_CHARSET" => "utf8mb4" "DB_COLLATE" => "" "WP_HOME" => "" "ASSET_URL" => "" "WP_SITEURL" => "" "UPLOADS" => "wp-content/uploads" "WP_MEMORY_LIMIT" => "256M" "WP_MAX_MEMORY_LIMIT" => "256M" "CONCATENATE_SCRIPTS" => true "FORCE_SSL_ADMIN" => true "FORCE_SSL_LOGIN" => true "AUTOSAVE_INTERVAL" => 180 "WP_POST_REVISIONS" => 10 "AUTH_KEY" => "" "SECURE_AUTH_KEY" => "" "LOGGED_IN_KEY" => "" "NONCE_KEY" => "" "AUTH_SALT" => "" "SECURE_AUTH_SALT" => "" "LOGGED_IN_SALT" => "" "NONCE_SALT" => "" "DEVELOPERADMIN" => null
全局辅助函数。
asset()
该 asset() 函数将生成一个资产的URL。
- 我们可以通过设置 .env 中的
ASSET_URL
来配置资产URL:ASSET_URL="${WP_HOME}/assets"
- 或者可选地,在主配置文件中。
asset( "/bootstrap/css/bootstrap-grid.css" ); // https://example.com/assets/dist/bootstrap/css/bootstrap-grid.css asset( "/images/thing.png" ); // https://example.com/assets/dist/images/thing.png asset( "/images/thing.png", "/static" ); // https://example.com/static/images/thing.png
asset_url()
资产目录的 asset_url() URL。
- 注意:
ASSET_URL
常量是可选的。 - 我们可以通过设置 .env 中的
ASSET_URL
来配置资产URL:ASSET_URL="${WP_HOME}/assets"
- 或者可选地,在主配置文件中。
asset_url(); // https://example.com/assets/dist/ asset_url() . "images/thing.png" // https://example.com/assets/dist/images/thing.png asset_url( "/static" ); // https://example.com/static
env()
可以使用 env() 函数获取环境变量的值。
env('FOO');
内核。
Kernel
$args
我们可以使用 Kernel $args
来设置自定义目录结构。
$args = [ 'web_root' => 'public', 'wp_dir_path' => 'wp', 'asset_dir' => 'assets', 'content_dir' => 'content', 'plugin_dir' => 'plugins', 'mu_plugin_dir' => 'mu-plugins', 'disable_updates' => true, ]; $http_app = new Kernel(__DIR__, $args); // or $http_app = new Kernel(__DIR__, ['content_dir' => 'content']);
CI/CD
我们可以使用GitHub Actions工作流来自动化部署过程。
name: remote ssh command on: [push] jobs: build: name: Build runs-on: ubuntu-latest steps: - name: executing remote ssh commands using password uses: appleboy/ssh-action@v0.1.10 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} script: whoami
https://github.com/marketplace/actions/ssh-remote-commands
无头模式
Corcel Corcel 是建立在 Laravel 框架的 Eloquent ORM 之上的 PHP 类集合,它提供了一个流畅的接口来连接和直接从WordPress数据库获取数据。 https://github.com/corcel/corcel
无头模式 将WordPress置于 "无头模式" 的辅助插件。适用于WordPress作为无头/解耦WordPress站点的CMS时。
// Activate the plugin and In wp-config.php, add a line defining the constant: define( 'HEADLESS_MODE_CLIENT_URL', 'https://example.com' );
https://github.com/Shelob9/headless-mode
Redis对象缓存
警告
请注意,配置Redis对象缓存可能是一个复杂的过程,因为它依赖于外部Redis服务器才能正常工作。如果您在设置Redis服务器或配置使用Redis的应用程序方面经验不足或没有经验,建议在使用此插件之前寻求帮助或咨询专家。
Redis对象缓存:搭配https://wordpresstheme.cn/plugins/redis-cache/和https://github.com/phpredis/phpredis/blob/develop/INSTALL.md,将使Web应用程序如虎添翼。
- 我们需要安装和设置Redis服务器,这取决于您当前的服务器配置: https://redis.ac.cn/docs/getting-started/
- 安装和设置phpredis https://github.com/phpredis/phpredis/blob/develop/INSTALL.md
- 安装和配置插件:安装Redis对象缓存:https://github.com/rhubarbgroup/redis-cache/blob/develop/INSTALL.md
最好使用phpredis,我们在测试过程中遇到了cron作业失败的问题,如果您决定使用Redis对象缓存专业版,也需要phpredis。
为什么
本包的目的是通过利用PHP dotenv访问存储在.env文件中的环境变量来简化WordPress配置常量的定义。通过这种方式使用环境变量,我们可以通过避免在我们的代码中存储敏感凭据来提高WordPress安装的安全性。
这种方法遵循构建和部署软件的十二因素应用方法,特别是第三原则,强调将配置数据存储在环境中的重要性。通过实施此包,我们可以遵循最佳实践,并确保我们的WordPress实例既安全又易于维护。
开发和支持状态(测试中)
⚠️该项目目前正在积极开发中。如果您考虑将其用于生产,请随时与我们联系,我们将很高兴提供额外的指导和支持。我们还鼓励并欢迎任何与此框架相关的issue和pull请求。
我们仍然处于测试阶段。虽然它正在积极开发中,但我们正在积极寻求用户反馈并进行改进。您欢迎加入我们的Slack社区,我们在这里有持续和活跃的讨论。