PHP:运行“mkdir”并获得errno

时间:2011-03-15 23:27:14

标签: php linux

我需要执行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的其余部分?

2 个答案:

答案 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,这使您能够直接使用stdinstdoutstderr作为PHP流,这意味着您可以使用正常的文件读写功能。

请务必在proc_closeproc_get_status页面上详细了解proc_家谱树。

您可以更好地处理提供给stderr的错误文本,而不是使用退出代码。