2011-09-14 2 views
3

私はPHPからlesscコンパイラを実行し、トラブルを抱えています。私はSymfonyを使用していて、sfLESSPluginの使用を試みましたが、失敗しました。ページが更新されるたびに、私のLESSファイルは1つのCSSファイルにコンパイルされるように、私は、ページのレンダリング前に実行されるフィルタで私のコードを入れてきました(手動で私は変更を加えるたびに再コンパイルしたくありません、少なくとも私が開発している間)。これは、エラーを返しPHPからLESSコンパイラを実行するにはどうすればいいですか?

$fs = new sfFilesystem(); 
$command = '/Users/jordanb/node/node_modules/less/bin/lessc less/bootstrap.less css/bootstrap.css'; 

try 
{ 
    $fs->execute($command, null, array($this, 'throwCompilerError')); 
} 
catch (RuntimeException $e) 
{ 
    return false; 
} 

::(、それはは、proc_open()呼び出しを実行symfonyのに深く掘り127のエラーコードで、「問題の実行コマンド」)と、ここで私がしようとしてきたさまざまなバリエーションがありますproc_close()を実行します。一部のオンライン調査では、エラーコード127はコマンドが見つからなかったことを示しています。

コマンドラインでまったく同じコマンドを実行すると、うまく動作します。

私は、/ Users/jordanb/node/node_modules/less/bin/lesscにchmod 777を実行して、権限の問題ではないことを確認しました。まだ動作しませんでした。

は私もちょうど「lessc」の代わりに動作しませんでした完全なパスを、試してみました。私は私に "/ユーザ/ jordanb /ノード/ node_modules /以下/ binに/ lessc" を与える "とlessc" と入力し、私のクラスパスにlessc追加しました。

私はまた、シンプルを試してみました:何もしていないようでした

shell_exec('lessc less/bootstrap.less css/bootstrap.css'); 

。私は出力をPHPエラーログとテキストファイルに出力し、どちらの場合も出力は空でした。私はまた、この場合にフルパスを使用してみました。

答えて

2

あなたは、物事にあなたが望むようにコンパイルするシェルスクリプトすることができます:

compile_css.sh

/Users/jordanb/node/node_modules/less/bin/lessc less/bootstrap.less css/bootstrap.css 

chmod +x compile_css.sh 

その後

そして最後に、あなたのスクリプトから呼び出しを

$command = '/path/to/compile_css.sh'; 

これにより、実行可能なものをより詳細に制御できますが、まだPHPから実行したい場合は、次のようにしてください:

$command = '/Users/jordanb/node/node_modules/less/bin/lessc "less/bootstrap.less css/bootstrap.css"'; 
// note the quotes around the arguments. 
関連する問題