meebio / php-eval-console
独立的PHP执行控制台。浏览器中的独立控制台,可以执行您的PHP代码并返回生成的输出。
Requires
- php: >=5.3.0
Requires (Dev)
- fieryprophet/php-sandbox: 1.3.*
Suggests
- fieryprophet/php-sandbox: Required for PhpSandboxEvaluator to work.
README
浏览器中的独立控制台,可以执行您的PHP代码并返回生成的输出。此包基于 darsain/laravel-console 包。
目录
安装
通过Composer获取包
composer require meebio/php-eval-console
将 vendor/meebio/php-eval-console/assets
复制到项目根目录下的 assets
。
在项目根目录中创建 index.php
文件,并包含以下内容
<?php require_once __DIR__ . '/vendor/autoload.php'; use Meebio\PhpEvalConsole\Console; $console = new Console(); $console->boot();
在浏览器中打开index.php页面。
配置
评估器
EvalEvaluator
使用 eval
命令的基本评估器。这完全不安全。
PhpSandboxEvaluator
更高级的PHP评估器,利用了 fieryprophet/php-sandbox 包。这个沙盒类使用 PHP-Parser 来防止沙盒中的代码运行不安全代码。如果配置正确,这个评估器可能允许应用向公众用户开放。要使用此评估器,需要在composer中包含 fieryprophet/php-sandbox
包。
授权者
IpAuthorizer
此授权者确保只有从提供的IP地址可以访问。授权者构造函数接受两个参数,第一个是允许的IP地址数组(如果此检查应被禁用则为null),第二个是禁止的IP地址数组(如果此检查应被禁用则为null)。
查询回调
闭包将在代码评估后提供查询数组。返回的数据应遵循以下格式
array( array( 'query' => 'SELECT * FROM `users`;', 'time' => 0.113, ), array( 'query' => 'SELECT * FROM `posts` JOIN `category` ON `post`.`category_id` = `category`.`id`;', 'time' => 0.231, ), );
Laravel支持
您应该通过Composer安装此包
composer require meebio/php-eval-console
您必须将服务提供者添加到应用程序配置中
'providers' => [ ... Meebio\PhpEvalConsole\Providers\PhpEvalConsoleLaravelServiceProvider::class, ... ];
您可以通过Artisan命令发布包资源
php artisan vendor:publish --provider="Meebio\PhpEvalConsole\Providers\PhpEvalConsoleLaravelServiceProvider"
或者只需将目录 vendor/meebio/php-eval-console/assets
复制到 public/vendor/php-eval-console
。
最后,您需要确保CSRF保护不是阻止控制台POST请求。要做到这一点,在Laravel 5.1中,您应该在VerifyCsrfToken类中将控制台URI添加到要排除的列表中。所以看起来是这样的
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'console', ]; }
对于Laravel的早期版本,也可以这样做,但可能需要一些手动方法覆盖。
完成所有这些后,您应该能在 /console
URI下看到控制台。
待办事项
- 改进错误处理。