Как запустить исходный файл.pot из PHP?
Я занят написанием приложения, которое должно быть правильно локализовано, но процесс создания шаблонов переносимых объектов вручную все время утомителен.
Может кто-нибудь сказать мне, почему этот кусок кода:
<?php
exec("xgettext -d templates/base -s -j -o default.pot templates/base/view.php", $output);
?>
ничего не делает, но когда я запускаю его в командной строке, он на самом деле заполняет файл default.pot найденными записями?
1 ответ
Я нахожу, что чаще всего подобные проблемы связаны с путями. Пользователь php/apache работает так, как на вашем компьютере (обычно "nobody" или "www-data"), вероятно, не имеет установленной переменной окружения PATH, и если это так, то, вероятно, он не имеет пути, содержащего xgettext
, Если эта переменная не установлена, то при выполнении этой команды bash (как этот пользователь) не сможет найти двоичный файл.
Лучший способ подтвердить это заключается в том, чтобы указать полный путь к xgettext
который, если вы не знаете, вы можете выполнить which xgettext
в Bash, чтобы получить путь и жесткий код его. Если это работает, вы можете либо оставить этот путь внутри, либо, если код должен быть переносимым, найти другое решение, такое как добавление пути к переменной среды PATH для пользователя apache.