我的服务器是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
答案 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
按位运算符
在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');
答案 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']);
}