現在、 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 の経験があまりないので、これが潜在的な問題かどうかはわかりません。