如何设置www-data区域设置

时间:2014-09-11 12:25:23

标签: php locale

我有一个启动java进程的php文件,该进程生成一个文件,应该通过http://www.servername.com/script.php调用。当我从控制台尝试php script.php时,文件被正确写入。如果我通过浏览器启动它,则文件名的编码存在问题。看来,www-data(当我通过浏览器启动它时是php脚本的用户)没有正确的语言环境。

有谁知道如何设置www-data的区域设置?

我在ubuntu trusty,php 5.5,java 1.7

谢谢, 斯文

3 个答案:

答案 0 :(得分:0)

当您尝试从浏览器运行此文件时,它以apache用户身份运行。但是当您从CLI运行此文件时,它按预期工作。您可以做一件事,更改文件将生成的目录的所有者。

chown -R www-data:www-data [you path]

希望它能奏效。

或尝试executing root commands via PHP

答案 1 :(得分:0)

使用“ sudo”命令执行脚本。 例如:

  1. 创建exec.php:

    <?php
    file_put_contents("/var/www/html/run.log", "run!\n"); 
    exec("/usr/bin/sudo /var/www/html/exec.sh", $out);
    file_put_contents("/var/www/html/run.log", var_export($out,true), FILE_APPEND); 
    ?>
    
  2. 创建exec.sh:

    #!/bin/sh
    #set you locale:
    export LC_ALL=en_EN.UTF-8
    #file that start a java process:
    /usr/bin/php -q /var/www/html/script.php
    
  3. 通过命令“ visudo”编辑/ etc / sudoers,它允许执行脚本而无需输入su密码:

    www-data ALL=(ALL) NOPASSWD: /var/www/html/exec.sh
    
  4. 通过exec.php(exec.php-> exec.sh-> script.php)调用script.php:

    curl 'http://www.servername.com/exec.php'
    
  5. 调试:

    more /var/www/html/run.log
    

答案 2 :(得分:0)

在PHP脚本中设置区域设置 也许您总是可以在脚本顶部更改语言环境,例如:

setlocale(LC_ALL, 'en_US');

PHP配置

使用phpinfo()查看哪个PHP ini被加载。当您从CLI调用PHP脚本时,可能会有另一个具有其他语言环境设置的配置