执行PHP和BASH的shell脚本有不同的结果

时间:2016-07-14 05:01:34

标签: php xml bash shell xslt

我对PHP shell_exec和Ubuntu' sh之间的不同结果有疑问。

背景

我正在尝试构建基于Web的SDLXLIFF-XML双向转换器。我使用XSLT实际控制数据,但程序基于Java JRE和DITA-OT的本地安装。

为了帮助用户安装Java和DITA-OT,我正在开发一个在线版本,因此用户只需上传和下载源文件。

服务器

  • Ubuntu Server 16.04 LTS
  • PHP 7.0.4
  • Apache 2.4
  • 韩语区域设置(kr-KO.UTF-8

问题

SDLXLIFF2XML字很好。流程如下:

  1. 上传SDLXLIFF文件并点击 Enter
  2. PHP执行shell_exec('sh 01.sh');
  3. 01.sh运行XSLT,然后压缩XML文件。
  4. PHP打开zip文件的下载对话框,然后@unlink s。
  5. 问题出在XML2SDLXLIFF上。过程几乎相同:

    1. 上传ZIP文件并点击 ENTER
    2. PHP执行shell_exec('sh 02.sh');
    3. 02.sh提取ZIP文件,然后运行XSLT。
    4. PHP打开SDLXLIFF文件的下载对话框,然后@unlink s。
    5. 实际的XSLT转换很好,但文件命名不是。英文显示很好,但韩文字符都显示为?例如(不要介意下面的韩文字符。它只是意味着'韩国')。,

      • 预期结果:Testing_transformation_한글.sdlxliff
      • 实际结果:Testing_transformation _ ??。sdlxliff

      除了逆转过程外,两个过程的PHP,XSLT和SH源几乎相同。

      一个区别是SDLXLIFF2XML的文件命名基于上传的文件名,而XML2SDLXLIFF是基于XML文件的字符串INSIDE。

      SDLXLIFF2XML可以很好地显示多字节字符,但它没有相反的工作方式。

      任何帮助都会很棒。

      谢谢。

0 个答案:

没有答案