nginx -t 包含不存在的目录时不会抛出错误

nginx -t 包含不存在的目录时不会抛出错误

当使用的目录*不存在时,我需要 nginx 失败。

conf.d目录不存在时该行;

include /path/to/conf.d/*.conf;

跑步时通过nginx -t

我完全知道该行不会导致错误的原因,是因为使用通配符时nginx会使用。它只是找不到文件,不包括它们,然后通过测试。当目录中没有文件时,我如何才能成功,而当目录不存在时却失败?globnginx -t

这是否可能,无需创建一个空文件conf.d并包含该文件或使用if语句?

答案1

str_replace我设法使用解决了该问题php

$files = glob('/path/to/nginx/files/*');
$toFind = $dirName.'/*';
$toReplace = $dirName.'/';
$editedFiles = [];
$editedFilesContents = [];
foreach ($files as $file)
{
    if (!is_dir($file))
    {
        $temp = file_get_contents($file);
        $contents = str_replace($toFind, $toReplace, $temp, $count);
        if ($count > 0)
        {
            $editedFiles[] = $file;
            $editedFilesContents[] = $temp;
            file_put_contents($file, $contents);
        }
    }
}
$error = exec('/usr/sbin/nginx -t', $output);
foreach ($editedFiles as $i => $file)
    file_put_contents($file, $editedFilesContents[$i]);

对于这样一个微不足道的问题,这似乎有点小题大做,但它允许我删除和重命名 nginx 配置页面中的文件夹,而不会冒破坏我的网站的风险。

相关内容