4

これは私が実行したい私のコマンドです。

php -r "apc_clear_cache(); apc_clear_cache('user'); apc_clear_cache('opcode');"

これは私のphingでの試みです

<exec command='php -r "apc_clear_cache(); apc_clear_cache(\'user\'); apc_clear_cache(\'opcode\');"' outputProperty="result" />

これは私が得るものです

BUILD FAILED
Error reading project file [wrapped: /var/virtual/abc.com/build.xml:171:26: > required]
Total time: 0.2093 seconds

お知らせ下さい。

アップデート:

RunApcClearCache.sh実行されるというbashスクリプトを作成することで問題を解決しました

php -r "apc_clear_cache(); apc_clear_cache('user'); apc_clear_cache('opcode');"

次に、を使用してbashスクリプトを呼び出します./RunApcClearCache.sh

もっと良い方法があれば、聞きたいです。

私はまた、単純なことのためだけにタスクを書くことにも抵抗があります。確かに、exectask 内で二重引用符を適切にエスケープする方法が必要です。

4

4 に答える 4

6

Phing には有効な XML が必要です。有効な XML では、属性内で " を直接使用することはできません。

それをエスケープするか、同等のエンティティを使用する必要があります。次の 5 つの定義済みエンティティがあります。

&lt; represents "<"
&gt; represents ">"
&amp; represents "&"
&apos; represents '
&quot; represents "

文字ではなくエンティティを使用してみてください。したがって、コマンド属性内の&quot;代わりに使用してください..."

https://en.wikipedia.org/wiki/XML#エスケープ

于 2015-08-11T10:41:52.107 に答える
0

これを試して:

<exec command="php -r 'apc_clear_cache(); apc_clear_cache(\'user\'); apc_clear_cache(\'opcode\');'" outputProperty="result" />

うまくいくかわからない

于 2013-01-10T09:06:14.133 に答える
0

新しいタスクを作成し、そこで php コードを実行します。新しい php ファイルを作成し、これを php で実行することもできます。

于 2013-01-10T09:51:23.750 に答える
0

私も同じ問題を抱えていました。シェル スクリプトを回避するために、対応するフレームワーク関数をマップするアドホック タスクを定義しました。

<adhoc-task name="fileHelper"><![CDATA[
  class FileHelper extends Task {

      private $lib = null;
      private $task = null;
      private $stub = null;

      function setTask($task) {
          $this->task = $task;
      }

      function setStub($stub) {
          $this->stub = $stub;
      }

      function setLib($lib) {
          $this->lib = $lib;
      } 

      function main() {
        $task = $this->task;
    $this->$task();
      }

      function generatePharStub() {
        include_once $this->lib . '/FileHelper.php'; 
        HTMLBuilder\FileHelper::generatePharStub($this->stub);
      }

      function generateIncludes() {
        include_once $this->lib . '/FileHelper.php'; 
        HTMLBuilder\FileHelper::generateIncludelist();
      }
  }
]]></adhoc-task>

次の方法で呼び出すことができます。

  <fileHelper lib="${lib}" stub="${stub}" task="generateIncludes" />

私の場合、 ${lib} はライブラリ ディレクトリを指します。${stub} は、生成された phar スタブ ファイルです。

于 2013-01-27T21:41:08.577 に答える