beyondcode / laravel-self-diagnosis
对您的Laravel应用程序执行各种自检测试。
2.0.0
2024-03-14 15:52 UTC
Requires
- php: ^8.2
- composer/semver: ^1.4|^3.0
- geerlingguy/ping: ^1.1
- illuminate/support: ^9.0|^10.0|^11.0
- vlucas/phpdotenv: ^5.0
Requires (Dev)
- larapack/dd: ^1.0
- mockery/mockery: ^1.0
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^9.5.10
- predis/predis: ^1.1
- scrutinizer/ocular: ^1.5
README
此包允许您在Laravel应用程序上运行自检测试。它自带多种检查,并允许您添加自定义检查。
以下是一个命令输出的示例
包含的检查
- 是否设置了 APP_KEY?
- 您的 composer 依赖项是否与 composer.lock 文件保持最新?
- 是否安装了正确的 PHP 版本?
- 是否安装了正确的 PHP 扩展?
- 能否建立到数据库的连接?
storage
和bootstrap/cache
目录是否有正确的权限?- 是否存在
.env
文件? - 维护模式是否已禁用?
- 系统上是否安装了所需的区域设置?
- 是否存在在
.env.example
中存在但在.env
中不存在的环境变量? - 是否有需要运行的数据迁移?
- 存储目录是否已链接?
- 能否访问 Redis?
开发环境检查
- 配置是否未缓存?
- 路由是否未缓存?
- 是否存在在
.env
中存在但在.env.example
中不存在的环境变量?
生产环境检查
- 配置是否已缓存?
- 路由是否已缓存?
- xdebug PHP 扩展是否已禁用?
- APP_DEBUG 是否设置为 false?
- 是否可以访问某些服务器?
- 是否运行了某些管理程序?
安装
您可以通过 composer 安装此包
composer require beyondcode/laravel-self-diagnosis
用法
只需调用 artisan 命令即可开始检查
php artisan self-diagnosis
自定义
您可以使用以下方式发布包含所有可用检查的配置文件
php artisan vendor:publish --provider=BeyondCode\\SelfDiagnosis\\SelfDiagnosisServiceProvider
这将发布一个位于 config
文件夹中的 self-diagnosis.php
文件。此文件包含将对应用程序执行的所有检查。
<?php return [ /* * A list of environment aliases mapped to the actual environment configuration. */ 'environment_aliases' => [ 'prod' => 'production', 'live' => 'production', 'local' => 'development', ], /* * Common checks that will be performed on all environments. */ 'checks' => [ \BeyondCode\SelfDiagnosis\Checks\AppKeyIsSet::class, \BeyondCode\SelfDiagnosis\Checks\CorrectPhpVersionIsInstalled::class, \BeyondCode\SelfDiagnosis\Checks\DatabaseCanBeAccessed::class => [ 'default_connection' => true, 'connections' => [], ], \BeyondCode\SelfDiagnosis\Checks\DirectoriesHaveCorrectPermissions::class => [ 'directories' => [ storage_path(), base_path('bootstrap/cache'), ], ], \BeyondCode\SelfDiagnosis\Checks\EnvFileExists::class, \BeyondCode\SelfDiagnosis\Checks\ExampleEnvironmentVariablesAreSet::class, \BeyondCode\SelfDiagnosis\Checks\LocalesAreInstalled::class => [ 'required_locales' => [ 'en_US', 'en_US.utf8', ], ], \BeyondCode\SelfDiagnosis\Checks\MaintenanceModeNotEnabled::class, \BeyondCode\SelfDiagnosis\Checks\MigrationsAreUpToDate::class, \BeyondCode\SelfDiagnosis\Checks\PhpExtensionsAreInstalled::class => [ 'extensions' => [ 'openssl', 'PDO', 'mbstring', 'tokenizer', 'xml', 'ctype', 'json', ], 'include_composer_extensions' => true, ], \BeyondCode\SelfDiagnosis\Checks\StorageDirectoryIsLinked::class, ], /* * Environment specific checks that will only be performed for the corresponding environment. */ 'environment_checks' => [ 'development' => [ \BeyondCode\SelfDiagnosis\Checks\ComposerWithDevDependenciesIsUpToDate::class => [ 'additional_options' => '--ignore-platform-reqs', ], \BeyondCode\SelfDiagnosis\Checks\ConfigurationIsNotCached::class, \BeyondCode\SelfDiagnosis\Checks\RoutesAreNotCached::class, ], 'production' => [ \BeyondCode\SelfDiagnosis\Checks\ComposerWithoutDevDependenciesIsUpToDate::class => [ 'additional_options' => '--ignore-platform-reqs', ], \BeyondCode\SelfDiagnosis\Checks\ConfigurationIsCached::class, \BeyondCode\SelfDiagnosis\Checks\DebugModeIsNotEnabled::class, \BeyondCode\SelfDiagnosis\Checks\PhpExtensionsAreDisabled::class => [ 'extensions' => [ 'xdebug', ], ], \BeyondCode\SelfDiagnosis\Checks\RedisCanBeAccessed::class => [ 'default_connection' => true, 'connections' => [], ], \BeyondCode\SelfDiagnosis\Checks\RoutesAreCached::class, \BeyondCode\SelfDiagnosis\Checks\ServersArePingable::class => [ 'servers' => [ 'www.google.com', ['host' => 'www.google.com', 'port' => 8080], '8.8.8.8', ['host' => '8.8.8.8', 'port' => 8080, 'timeout' => 5], ], ], \BeyondCode\SelfDiagnosis\Checks\SupervisorProgramsAreRunning::class => [ 'programs' => [ 'horizon', ], 'restarted_within' => 300, // max seconds since last restart, 0 to disable check ], ], ], ];
可用配置选项
以下选项可用于单个检查
BeyondCode\SelfDiagnosis\Checks\ComposerWithDevDependenciesIsUpToDate
- additional_options (字符串,可选参数如
'--ignore-platform-reqs'
):composer 的可选参数
- additional_options (字符串,可选参数如
BeyondCode\SelfDiagnosis\Checks\ComposerWithoutDevDependenciesIsUpToDate
- additional_options (字符串,可选参数如
'--ignore-platform-reqs'
):composer 的可选参数
- additional_options (字符串,可选参数如
BeyondCode\SelfDiagnosis\Checks\DatabaseCanBeAccessed
- default_connection (布尔值,默认:
true
):是否应检查默认连接 - connections (数组,连接名称列表如
['mysql', 'sqlsrv']
,默认:[]
):要检查的附加连接
- default_connection (布尔值,默认:
BeyondCode\SelfDiagnosis\Checks\DirectoriesHaveCorrectPermissions
- directories (数组,目录路径列表如
[storage_path(), base_path('bootstrap/cache')]
,默认:[]
):要检查的目录
- directories (数组,目录路径列表如
BeyondCode\SelfDiagnosis\Checks\LocalesAreInstalled
- required_locales (数组,区域设置列表如
['en_US', 'en_US.utf8']
,默认:[]
):要检查的区域设置
- required_locales (数组,区域设置列表如
BeyondCode\SelfDiagnosis\Checks\PhpExtensionsAreDisabled
- extensions (数组,扩展名称列表如
['xdebug', 'zlib']
,默认:[]
):要检查的扩展
- extensions (数组,扩展名称列表如
BeyondCode\SelfDiagnosis\Checks\PhpExtensionsAreInstalled
- extensions (数组,扩展名称列表如
['openssl', 'PDO']
,默认:[]
):要检查的扩展 - include_composer_extensions (布尔值,默认:
false
):是否应检查composer.json
中定义的所需扩展
- extensions (数组,扩展名称列表如
BeyondCode\SelfDiagnosis\Checks\RedisCanBeAccessed
- default_connection (布尔值,默认:
true
):是否应检查默认连接 - connections (数组,连接名称列表如
['cache_1', 'cache_2']
,默认:[]
):要检查的附加连接
- default_connection (布尔值,默认:
BeyondCode\SelfDiagnosis\Checks\SupervisorProgramsAreRunning
- 程序 (数组,程序列表,例如
['horizon', 'another-program']
,默认:[]
):需要运行的程序 - 重启时间 (整数,程序上次重启后的最大允许秒数(
0
= 禁用),默认:0
):验证程序是否最近已重启以获取代码更新
- 程序 (数组,程序列表,例如
BeyondCode\SelfDiagnosis\Checks\ServersArePingable
- 服务器 (数组,服务器和参数列表,例如
['google.com', ['host' => 'google.com', 'port' => 8080]]
):要ping的服务器
- 服务器 (数组,服务器和参数列表,例如
自定义检查
您可以通过实现 BeyondCode\SelfDiagnosis\Checks\Check
接口并将类添加到配置文件中来创建自定义检查。例如
<?php use BeyondCode\SelfDiagnosis\Checks\Check; class MyCustomCheck implements Check { /** * The name of the check. * * @param array $config * @return string */ public function name(array $config): string { return 'My custom check.'; } /** * Perform the actual verification of this check. * * @param array $config * @return bool */ public function check(array $config): bool { return true; } /** * The error message to display in case the check does not pass. * * @param array $config * @return string */ public function message(array $config): string { return 'This is the error message that users see if "check" returns false.'; } }
示例输出
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 marcel@beyondco.de 而不是使用问题跟踪器来联系。
鸣谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。