meebio/php-eval-console

独立的PHP执行控制台。浏览器中的独立控制台,可以执行您的PHP代码并返回生成的输出。

安装数: 15,342

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

公开问题: 0

语言:JavaScript

1.1.1 2015-10-19 07:00 UTC

This package is auto-updated.

Last update: 2024-09-08 19:46:21 UTC


README

浏览器中的独立控制台,可以执行您的PHP代码并返回生成的输出。此包基于 darsain/laravel-console 包。

Screenshot

目录

安装

通过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下看到控制台。

待办事项

  • 改进错误处理。