我正忙于编写一个需要正确本地化的应用程序,但手动创建可移植对象模板的操作一直很乏味。
有人能告诉我为什么这段代码:吗
<?php
exec("xgettext -d templates/base -s -j -o default.pot templates/base/view.php", $output);
?>
什么都没做,但当我在命令行中运行它时,它实际上用它找到的条目填充了default.pot文件?
我发现像这样的问题通常是由路径引起的。用户php/apache在您的机器上运行(通常为"nobody"或"www data")可能没有设置PATH环境变量,如果设置了,则可能没有包含xgettext
的路径。如果没有设置该变量,那么在执行该命令时,bash(作为该用户)将无法找到二进制文件。
确认这一点的最好方法是输入xgettext
的完整路径,如果你不知道的话,可以在bash中执行which xgettext
来获取路径并对其进行硬编码。如果它有效,你可以保留该路径,或者如果代码需要可移植,可以找到另一个解决方案,比如为apache用户将路径添加到path环境变量中。