0

現在、 http ://derek.simkowiak.net/pygments-for-php/ にある Pygments for PHP プラグインを使用しています。

そのコードから実際に Pygments を呼び出す行は、渡された exec() です。

pygmentize -f html $extra_opts -l $language $temp_name
コマンドとして。これはすべて正常に機能し、出力が返され、プラグインによってフォーマットされます。

私が同時にやりたいことは、Pygments がそのイメージを作成することなので、同様のコマンドを exec() に渡します。

pygmentize -f png $extra_opts -l $language -o $full_image_path/$output_file.png $temp_name
ここで問題が発生します。画像は、予期されるフォルダーに表示されません。

ただし、var_dump()その前にそのコマンド文字列exec()を取得して、コマンドラインから直接実行すると、正常に動作します。

PHP ユーザーが www-data であることを示す exec('whoami') をエコーし​​てみました。www-data にアクセス許可を与え、所有権を画像を保存するフォルダーの www-data に変更しようとしました。また、何が起こるかを確認するために、パーミッションを 777 に変更しようとしましたが、答えは何もありません。

足りないものはありますか?試すアイデアが不足しています。ありがとうございました!

編集:私がチェックしたもう1つのことは、execコマンドからの出力と戻り値です。空の配列を出力し、戻り値として 1 を返します。

編集 2:そのディレクトリが PHP ユーザーに対して書き込み可能/読み取り可能であることを確認した後、pygments に特定のユーザーとして書き込む権限がない可能性はありますか? 自分で実行すると問題なく動作し、実際、PHP が HTML lexer を使用して実行すると実行できるため、これが理にかなっているかどうかはわかりません。私は Python の経験があまりないので、これが潜在的な問題かどうかはわかりません。

4

2 に答える 2

0

私はあなたがこのようにすることはできないと思います。

$output_file.png

試す

$file = $output_file.".png"

そしてexecで置き換えます

于 2013-03-06T12:08:55.180 に答える