我正在忙着编写一个需要正确本地化的应用程序,但是一直手动创建可移植对象模板的行为很繁琐。
任何人都可以告诉我为什么这段代码:
<?php
exec("xgettext -d templates/base -s -j -o default.pot templates/base/view.php", $output);
?>
没有做任何事情,但是当我在命令行中运行它时,它实际上用它找到的条目填充default.pot文件?
答案 0 :(得分:3)
我经常发现这样的问题是由于路径造成的。用户php / apache在你的机器上运行(通常是'nobody'或'www-data')可能没有设置PATH环境变量,如果是,它可能没有包含{{1的路径}}。如果未设置该变量,则在执行该命令时bash(作为该用户)将无法找到二进制文件。
确认这一点的最佳方法是问题是放入xgettext
的完整路径,如果你不知道你可以在bash中执行xgettext
来获取路径并硬编码。如果它可以工作,您可以保留该路径,或者如果代码需要可移植,则找到另一个解决方案,例如为apache用户添加PATH环境变量的路径。