shell script
とC
アプリケーションのハイブリッドを実行していますto allow execution as root
。FontForge
で書かれているウェブサイトからいくつかの変換を行うために使用していますPHP
。私の問題は、FontForge が何らかの問題に遭遇すると、エラー情報が標準出力に吐き出されることです。現在、その出力をキャプチャし、キーワードを解析してエラー メッセージを生成しています。
Q: どうにかしてその出力を何らかの変数にリダイレクトし、処理のために PHP に戻すことができるかどうか疑問に思っています。現在のソリューションがブラウザーで正常に動作する限り、残念ながら単体テストを実行すると、失敗したグリフ マッピング情報のページが表示されます。結果を曖昧にするだけです。std_out を完全にバイパスしたいと思います。
私は C やシェル スクリプトにあまり詳しくないので、笑わないでください :)。これが私が持っているものです:
PHP:
[...]
$new_path = exec("./convert_font " . $file . " " . $file2);
if (strpos($new_path, 'Save Failed') !== false) {
// throw exception or something
}
[...]
スクリプト (convert_font):
#!/bin/bash
PATH=/usr/local/bin:$PATH
FONTFORGE_LANGUAGE=ff
export PATH FONTFORGE_LANGUAGE
if (test -f $1);
then
a=$(./pfb2otf $1 $2 2>&1)
fi
echo $a
C (pfb2otf):
#!/usr/bin/fontforge
//Opens file
Open($1);
Reencode("unicode");
//Makes conversion to otf
Generate($2+".otf");
//Prints the resulting name (if conversion is successful) to STD_OUT so I can capture it with my bash script to send back to PHP and consider operation successful to
Print($2+".otf");
Quit(0);