Как запустить исходный файл.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.

Другие вопросы по тегам