【发布时间】:2015-11-12 05:15:26
【问题描述】:
当有人访问某个 PHP 页面时,我正在尝试从该页面运行 SVN 更新。我专门运行的相关PHP代码是:
echo exec("2>&1 svn update --username bing --password s3cr3t example/", $output);
echo print_r($output, true)."<br/>";
运行此代码时,我在浏览器中打印以下消息:
svn: E000022: /var/www/html/example/apple-touch-icon-114?\195?\151114-precomposed.pngArray ( [0] => 更新'example': 1 => svn : E000022: 无法将字符串从 'UTF-8' 转换为本机编码: [2] => svn: E000022: /var/www/html/example/apple-touch-icon-114?\195?\151114- precomposed.png ) 数组([0] => 更新“示例”:1 => svn:E000022:无法将字符串从“UTF-8”转换为本机编码:[2] => svn:E000022:/var/www/ html/example/apple-touch-icon-114?\195?\151114-precomposed.png)
/var/www/html/example/ 文件夹中有一个名为 apple-touch-icon-114×114-precomposed.png 的文件(注意 × 符号用于乘法,而不是字母 x),但我将其重命名为使用字母x 而是更新了存储库(实际上完全位于单独的机器上)。
尽管如此,当我尝试运行它时,我得到了同样的错误。我搜索了这个错误并找到了建议运行export LC_CTYPE=en_US.UTF-8 或export LC_ALL=en_US.UTF-8 的a few other questions,但他们从不解释这是什么或应该在哪里运行这些命令。我尝试通过命令行运行它们,然后在上面列出的 exec/print_r 之前写了以下几行,所以整个事情看起来像这样:
echo exec("2>&1 export LC_ALL=en_US.UTF-8", $output);
echo print_r($output, true)."<br/>";
echo exec("2>&1 svn update --username bing --password s3cr3t example/", $output);
echo print_r($output, true)."<br/>";
无论如何,我仍然收到相同的错误消息,并且example 目录没有更新。
有谁知道我做错了什么?我确定这很简单,但我已经坚持了一天。
【问题讨论】: