我需要执行mkdir
命令(例如通过PHP的exec
命令)。如何访问标准错误(例如EACCES
,请参阅:http://pubs.opengroup.org/onlinepubs/009695399/functions/mkdir.html)。建议?感谢。
更新
我在命令中添加了2>&1
:
$command = "sudo mkdir /home/test 2>&1";
$output = array();
$return = 0;
exec($command, $output, $return);
没有它,我曾经得到0
(成功)或-1
(错误)。现在,我在一次测试中得到1
- 我认为这是因为我尝试创建的目录已经存在。似乎1
映射到EEXIST
。如何映射errno的其余部分?
答案 0 :(得分:2)
你不能。
您希望通过mkdir
捕获errno
函数的错误,但是您对PHP的exec()的调用意味着您将处理退出外部程序的代码 mkdir
。
区别在于:
http://pubs.opengroup.org/onlinepubs/009695399/functions/mkdir.html(你引用的)
和
http://pubs.opengroup.org/onlinepubs/009695399/utilities/mkdir.html(你执行)
答案 1 :(得分:0)
您可能正在寻找proc_open
,这使您能够直接使用stdin
,stdout
和stderr
作为PHP流,这意味着您可以使用正常的文件读写功能。
请务必在proc_close
和proc_get_status
页面上详细了解proc_
家谱树。
您可以更好地处理提供给stderr
的错误文本,而不是使用退出代码。