我正在运行一个混合shell script
和一个C
应用程序to allow execution as root
。我正在使用它FontForge
从用PHP
. 我的问题是,当 FontForge 遇到一些问题时,它会将错误信息喷出到标准输出中。我目前正在捕获该输出并将其解析为关键字以生成一些错误消息。
问:我想知道我是否可以以某种方式将该输出重定向到某个变量并将其传递回 PHP 进行处理 - 只要当前解决方案在浏览器下工作正常,不幸的是,当我运行单元测试时,我会得到一些失败的字形映射信息页面只不过掩盖了结果。我想完全绕过 std_out 。
我对 C 或 shell 脚本都不是很熟悉,所以请不要笑:)。这是我所拥有的:
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);