PHP exec() 函数使用 apache 抛出空数组值,但 CLI 没问题
PHP exec() function throws empty array values with apache, but CLI's are fine
我有这个:
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
的用户。但是,当您通过浏览器访问时,浏览器会通过您的网络服务器,它会使用不同的用户登录,我们将 apache
.
root
可以访问 UUID,apache
没有。
您特定计算机上的实际用户可能有所不同。
我有这个:
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
的用户。但是,当您通过浏览器访问时,浏览器会通过您的网络服务器,它会使用不同的用户登录,我们将 apache
.
root
可以访问 UUID,apache
没有。
您特定计算机上的实际用户可能有所不同。