如何运行从PHP创建的初始.pot文件?

如何运行从PHP创建的初始.pot文件?,php,exec,xgettext,Php,Exec,Xgettext,我正忙着编写一个需要正确本地化的应用程序,但是一直手动创建可移植对象模板的操作非常繁琐 有人能告诉我为什么这段代码: <?php exec("xgettext -d templates/base -s -j -o default.pot templates/base/view.php", $output); ?> 除了在命令行中运行该命令外,它什么也不做,而是用它找到的条目填充default.pot文件?我发现这样的问题通常是由路径引起的。在您的计算机上运行的用户php/apa

我正忙着编写一个需要正确本地化的应用程序,但是一直手动创建可移植对象模板的操作非常繁琐

有人能告诉我为什么这段代码:

<?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环境变量中

我发现像这样的问题通常都是由路径引起的。在您的计算机上运行的用户php/apache(通常为“nobody”或“www data”)可能没有设置PATH环境变量,如果设置了,则可能没有包含
xgettext
的路径。如果未设置该变量,则在执行该命令时,bash(作为该用户)将无法找到二进制文件

确认此问题的最佳方法是输入
xgettext
的完整路径,如果您不知道,可以在bash中执行
which xgettext
以获取路径并对其进行硬编码。如果可行,您可以将该路径保留在中,或者如果代码需要可移植,则可以找到其他解决方案,例如为apache用户将路径添加到path环境变量中