PHP exec()函数使用apache抛出空数组值,但CLI';好的
我有这个:PHP exec()函数使用apache抛出空数组值,但CLI';好的,php,arrays,exec,Php,Arrays,Exec,我有这个: 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
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] =>
)
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
)
但是从httphttp,输出是:
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] =>
)
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
)
这是错误还是字符集问题?问题在于,当您通过CLI登录时,我们称之为
root的用户。但是,当您通过浏览器(通过Web服务器)进行访问时,它是由另一个用户登录的,我们将apache
root
有权访问UUID,apache
没有
特定计算机上的实际用户可能会有所不同。尝试执行:var\u dump($result)如果您在浏览器中看到任何内容,请查看源代码?这可能是一个权限问题,当您登录到控制台时,您可以访问该二进制文件,而Web服务器的进程不能访问该二进制文件。@Rizier123仍然是空字符串<代码>[0]=>字符串(0)””
@Augwa我不认为这与权限有关,因为我在两种情况下都有相同大小的数组,只是valuestry没有改变lsblk-没有“UUID”;2> &1
也许您有权在cli上与用户一起查看uuid,而Web服务器没有权限,因此它只返回空字符串。谢谢@Augwa您说得对,这是关于uuid的权限!