PHP上的shell_exec和exec没有返回字符串

I got headache by this code:

$data = shell_exec("wget -S --spider http://dkphp.com");
echo "Encoded:" .$data;

$data is "NULL"

I don't know why, its support to echo something like :( Spend like 5 hours today, and its still NULL :(

HTTP request sent, awaiting response...
  HTTP/1.0 200 OK
  Date: Thu, 29 Sep 2011 01:31:45 GMT
  Server: LiteSpeed
  Connection: close
  X-Powered-By: PHP/5.3.8
  Set-Cookie: PHPSESSID=50781d657c7632cc1b2e7536d5fa0c50; path=/
  Expires: Thu, 19 Nov 1981 08:52:00 GMT
  Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
  Pragma: no-cache
  content: text/html
  Content-Type: text/html
Length: unspecified [text/html]
200 OK

展开翻译

译文

我对此代码感到头疼:</ p>

  $ data =  shell_exec(“wget -S --spider http://dkphp.com”); 
echo“编码:”。$ data;
</ code> </ pre>

$ data is“ NULL“</ p>

我不知道为什么,它支持回声类似:(今天花了5个小时,它仍然是NULL :( </ p>

 发送HTTP请求,等待响应... 
HTTP / 1.0 200 OK
日期:星期四,2011年9月29日01:31:45 GMT
服务器:LiteSpeed
连接:关闭
X-Powered -By:PHP / 5.3.8
Set-Cookie:PHPSESSID = 50781d657c7632cc1b2e7536d5fa0c50; path = /
Expires:Thu,19 Nov 1981:08:52:00 GMT
Cache-Control:no-store,no-cache, must-revalidate,post-check = 0,
Pragma:no-cache
content:text / html
Content-Type:text / html
Length:unspecified [text / html]
200 OK
</ code > </ pre>
</ div>

doujiebo9849
doujiebo9849 你是否在安全模式下运行PHP?如果根据PHP手册在安全模式下运行,则该命令被禁用
8 年多之前 回复

1个回答

I checked your code snippet in PHP's interactive mode (php -a from the command line)

wget prints that information to STDERR, not STDOUT.

This works:

$data = shell_exec("wget -S --spider http://dkphp.com 2>&1");
echo "Encoded:" .$data;
dongsibao8977
dongsibao8977 您可能会发现本文有用:en.wikipedia.org/wiki/Standard_streams。 此外,还有一些标准方法可以在Linux shell中重定向流。 这个解释了我上面提到的内容,因为STDERR流被重定向到STDOUT流。 (shell_exec读取的地方)cyberciti.biz / faq / redirecting-stderr-to-stdout
8 年多之前 回复
douya1938
douya1938 多谢你们。 您能否发送任何链接来了解STDERR和STDOUT?
8 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问