代码(〜)是否适用于php设置(.user.ini / php.ini)以引用主目录中的路径?

时间:2014-07-04 17:42:46

标签: php linux directory

我的服务器是Linux共享主机,允许我为php初始化指定.user.ini。我试图通过抛出异常来记录错误。当我将路径指定为"./logs/phperrors.log"但不指向引用我的主目录的~/logs/phperrors.log时,它会起作用。

error_log = "~/logs/phperrors.log"

file_uploads = On
post_max_size = 1024M
upload_max_filesize = 1024M
max_input_time = -1
max_execution_time = -1
memory_limit = -1
max_file_uploads = 1000

3 个答案:

答案 0 :(得分:2)

是。 PHP ini字符串可以包含环境变量。

这是来自include_path ini setting description

的说明
  

ENV 变量也可以在.ini文件中访问。因此,可以使用 $ {LOGIN} $ {USER} 来引用主目录。
  环境变量可能因服务器API而异,因为这些环境可能不同。

在您的情况下,您正在寻找的环境变量最有可能写为${HOME}

error_log = "${HOME}/logs/phperrors.log"

答案 1 :(得分:0)

抱歉不一样的语法 - 在PHP中,代字号被用作按位否定运算符。

从PHP手册 https://php.net/manual/en/language.operators.bitwise.php

按位运算符 enter image description here

在Lunix机器上改为使用

$_SERVER['HOME']

换句话说

error_log = $_SERVER['HOME'] . "/logs/phperrors.log"

查看类似问题的完整答案: How to get the home directory from a PHP CLI script?

关于如何修改你的php.ini
我没有尝试过,但这应该可行 - 在你的一个PHP文件中添加代码:

ini_set('error_log', $_SERVER['HOME'] . '/logs/phperrors.log');

参考:http://www.php.net/manual/en/function.ini-set.php

答案 2 :(得分:0)

一种想法是使用ini_set,因为没有一种简单的方法可以直接在.ini文件中执行您想要的操作。

首先,检查HOME是否在您的服务器环境变量中......如果是,请使用它,如果没有,也许您可​​以将配置文件保存为默认的硬编码。

    if (getenv("HOME")) {
        $home = getenv("HOME");
        ini_set('error_log', $home . "/logs/phperrors.log");
    } else {
        ini_set('error_log', $config['log_directory']);
    }