PHP exec() 函数使用 apache 抛出空数组值,但 CLI 很好



我有这个:

exec('lsblk -no "UUID" 2>&1', $result);
print_r($result);

在CLI模式下,一切都很好,输出为:

Array
(
    [0] =>
    [1] =>
    [2] => d5b31fcc-ba84-47bc-ab1e-7f71178c791f
    [3] =>
    [4] => Dj0hJ3-c9C4-B1px-HIYW-DGwi-v9I9-eppfgL
    [5] => e266aff1-e6a7-444a-b9b3-2da2f9b71202
    [6] => 3fc422ac-0cde-4b54-aab1-cac10d3d5f0b
    [7] =>
)

但是,从 http 中,输出为:

Array
(
    [0] => 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 
    [7] => 
)

这是一个错误,还是 charset 问题?

问题是,当您通过CLI登录时,用户将调用root。但是,当您通过浏览器访问通过Web服务器时,它将使用其他用户登录,我们将apache

root可以访问UUID,apache无法。

您特定机器上的实际用户可能会有所不同。

最新更新