3

最悪の運用サーバーで作業する必要があります。Symfony2 に必要な PHP バージョンは apache で使用できますが、古い PHP バージョンを使用する CLI では使用できません。

私の質問は... Web ブラウザーからコンソール コマンドを実行する方法はありますか? そのため、ファイルをサーバーのルート ディレクトリに移動し、consoleいくつかの変更を行います...後で、セキュリティ上の理由から、もちろん、このファイルはルートの外に保存されます。

4

6 に答える 6

12

ブラウザにはコンソール用のバンドルがあります。

https://github.com/winzou/ConsoleBundle

共有サーバーに使用されます。

于 2012-11-19T08:45:32.537 に答える
3

ブラウザからキャッシュをクリアしたかったのですが、ConsoleBundle全体(上記の受け入れられた回答を参照)は私には多すぎました(そして、ユーザーにはまだオタクすぎました)。このバンドルは、提供されるユーザー インターフェイスがなくても簡単に使用できることがわかりました。

// install the bundle & run this code, e.g. in a controller
$console = new \CoreSphere\ConsoleBundle\Executer\CommandExecuter($this->container->get('kernel'));
$response = $console->execute("cache:clear --env=prod");
var_dump($response); // returns output and error code etc 
于 2013-08-17T05:01:55.230 に答える
3

最近、上記の ConsoleBundle をインストールしようとしましたが、作曲家はそれが放棄されたと言いました。その代わりにこれを使用します: https://github.com/CoreSphere/ConsoleBundle

于 2015-04-28T19:14:29.067 に答える
1

私の知る限りではありませんが、Apacheで使用されているphpバージョンを使用する必要があります。.bash_profile / .zshrcでエイリアスを設定します:alias php ='/ path / to / php / used / by / apache / bin / php'または、常にphp / path /to/へのパス全体でapp/consoleを実行しますphp / used / by / apache / bin / php app / console

または、configuration / php.iniに問題がある場合は、どちらが使用されているかを確認します。php -i | grep php.ini結果:ロードされた構成ファイル=> /etc/php5/cli/php.ini "たとえば、-php-iniまたは-cパラメーターを使用して別の構成ファイルを使用できます:php -c / etc / php5 / cgi -i | grep php.ini

于 2012-11-19T00:26:36.553 に答える
0

この問題に対するカスタマイズされた解決策を提示しました。

あなたの質問への答えの下に、丸一日の痛みと良い解決策を見つけようと必死になった後。

1) 次のようにファイル.batを Web ディレクトリに作成します。

your_symfony_dir/www/web/console.bat

これは、 console.batファイルの内容です。

set cmd=%~1
cd ..
php app/console %cmd%

2) 次のように、ファイル.phpを Web ディレクトリに作成します。

your_symfony_dir/www/web/console.php

これはファイルconsole.phpの内容です:

<?php
if (!preg_match('/^192\.168\.(1)\.[0-9]+$/', $_SERVER['REMOTE_ADDR'])) {
    die("Access Denied!");
}
?>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Console</title>
    </head>
    <body style='font-family: monospace;'>
        <h1>Console</h1>
        <form method='POST'>
            <fieldset>
                <legend>Comandi base</legend>               
                <p><button name='pre_cmd[]' value='cache:clear'>Clear Cache</button></p>
                <p><button name='pre_cmd[]' value='assets:install'>Install Assets</button></p>
            </fieldset>
            <fieldset>
                <legend>Comando personalizzato</legend>             
                <p>php app/console <input type='text' name='cmd' value='' /><input type='submit' value='Esegui' name='submit' /> <input type='reset' value='Annulla' /></p>
            </fieldset>
        </form>
        <?php
        if ($_POST) {
            $cmd = $_POST['cmd'] ? $_POST['cmd'] : (is_array($_POST['pre_cmd']) ? $_POST['pre_cmd'][0] : false);
            if ($cmd) {
                echo "<div style='color:white;background:black;padding:10px'>";
                echo "<pre>";
                $output = array();
                exec($_SERVER['DOCUMENT_ROOT'] . '\console.bat "' . $cmd . '"', $output);
                foreach ($output as $o) {
                    echo htmlspecialchars($o);
                    echo PHP_EOL;
                }
                echo "</pre>";
                echo "</div>";
            } else {
                echo "<p>Comando vuoto</p>";
            }
        }
        ?>
    </body>
</html>

要約すると、post 値 (「cache:clear」などのコマンドライン入力) を取得し、次のコマンドを使用して.batファイルに実行します。

exec($_SERVER['DOCUMENT_ROOT'] . '\console.bat "' . $cmd . '"', $output);

3) URL www.tuodominio.it/console.phpを実行すると、コマンド (cache:clear など) を入力できるフォームが表示されます。私の快適さのために、私はすでに「app/console」部分をセットアップしたbatファイルに、「cache:clear」または「assets:install」などを数字で入力する必要があります。

于 2013-10-25T14:17:12.023 に答える