我使用下面的命令将po转换为mo,使用php进行gettext转换。
exec("msgfmt messages.po -o messages.mo");
如果在CLi上执行相同的命令它工作正常,但通过php它不会将po转换为mo文件。
如果我错过了什么,请建议我。
答案 0 :(得分:0)
让它运作的几个步骤:
检查php.ini中的已禁用功能,并从列表中删除'exec':
disable_functions选项= “”
exec可以受safe_mode的限制。你可以在httpd.conf中关闭safemode:
php_admin_value safe_mode off
检查您的网络文件夹中的.htaccess,可能会有一些设置被覆盖。
检查用户php运行如下:
echo exec('whoami');
然后为使用过的文件和执行的命令添加正确的权限。
在命令中使用完整服务器路径:
exec(“/ full / path / to / msgfmt /full/path/to/messages.po -o /full/path/to/messages.mo“);
答案 1 :(得分:0)
我建议“使用工具”,并避免重新发明轮子。
看一下这段很好的开源代码:https://github.com/josscrowcroft/php.mo
php.mo是一些带输入(.po)文件的函数 生成输出(.mo)文件。用法很简单:
<?php
require('php-mo.php');
phpmo_convert( 'messages.po');
?>
希望这有帮助!