php - 浏览器无法打开php页面?

标签 php linux shell networking

首先我要展示 PHP 代码....

<?php 

 echo ("hello");

 echo exec("sendip -v -p ipv6 -6s 2001::100 -p tcp -ts 21 -td 21 2001::200 2> 
 &1");

 echo ("hi");

 ?>

当我通过 linux 命令行输入命令时,它工作正常。该命令从 2001::100 向 2001::200 机器发送一个 tcp ipv6 数据包。

[root@udit-pc]# sendip -v  -p ipv6 -6s 2001::100 -p tcp -ts 21 
-td 21 2001::200 > /dev/null &

/* (-v for verbose) */    

以上命令的输出...

 Added 34 options
 Initializing module ipv6
 Initializing module tcp
 Finalizing module tcp
 Finalizing module ipv6
 Final packet data:
 60 00 00 00   `...
 /*

  here other packet 
  contents gets printed

  */

 7D 62 00 00   }b..
 61 62 63 64   abcd
 Sent 64 bytes to 2001::200
 Freeing module ipv6
 Freeing module tcp

当我通过命令行执行 php 脚本时...

[root@udit-pc]# php test.php
Freeing module tcp

hellohi 被打印出来,数据包到达 2001::200。

但是当我尝试通过浏览器运行 php 脚本时出现问题...

 http:://localhost/test.php

hellohi 被打印出来但是数据包没有到达其他机器。

 sh: sendip: command not found

同样,在这两种情况下,虽然使用详细选项但在直接使用命令详细选项时数据包内容不会在终端打印。

我尝试了很多东西,虽然我不认为它们会有帮助,比如......

  1. 我将/usr/local/lib 和 usr/local/bin 添加到 PATH 变量但没有任何好处。

  2. chmod +s/usr/local/bin/sendip .Sticky 位设置但同样没有任何好处。

  3. 尽管我已经更改了 PATH 变量,但将/usr/local/bin/sendip 本身粘贴到/var/www/html 文件夹中,但正如我所说,我只是在使用 hit n trial 没有任何线索......

有一些输出快照可能会进一步帮助....

[root@cc html]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin: 
/usr/X11R6/bin:/root/bin:/usr/local/lib

[root@cc html]# locate sendip
.....
/usr/local/bin/sendip
/usr/local/lib/sendip
.....

 [root@cc bin]# chmod +s sendip
 [root@cc bin]# ls -l sendip
 -rwsrwsrwx 1 apache apache 41071 Sep 26 19:41 sendip

 [root@cc bin]# cd /usr/local/lib/
 [root@cc lib]# ls -ld sendip
 drwxrwxrwx 2 root root 4096 Sep 28 22:48 sendip
 [root@cc lib]# chmod +s sendip
 [root@cc lib]# ls -ld sendip
 drwsrwsrwx 2 root root 4096 Sep 28 22:48 sendip

当文件内容改变时......

 <?php
 echo exec("/usr/bin/sendip ........  2 > &1");
 ?>

然后输出是:

 [root@cc html]# php test.php
 Freeing module tcp[root@cc html]# 

在浏览器上.... 没有打印错误,但数据包仍未到达。

我被困在两者之间。请建议我还应该尝试什么?????/

最佳答案

sendip() 是否在 PHP 调用的 shell 路径中?您没有检查错误情况,所以您可能实际上没有执行 sendip,而只是收到“没有这样的程序或文件”类型的错误。

与其将 exec() 命令的输出重定向到 null,不如将其全部重定向到浏览器,这样您就可以看到发生了什么:

echo exec("sendiip yada yada yada 2>&1");

关于php - 浏览器无法打开php页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7600382/

相关文章:

Python 中类似 PHP 的数组处理 : Indexing multidimensional array

linux - 尽管有 CONFIG_COMPAT,但在 aarch64 上运行 32 位 ARM 二进制文件不起作用

linux - 汇编:如何将数字转换为ascii并写入显示缓冲区

c - 实现管道以模仿 Shell

linux - diff 命令忽略新目录中的新文件

regex - "sed"特殊字符处理

php - Laravel 5 PDF页脚与 Blade 显示空白

php - 检测从数据库中提取的文件的 MIME 类型

php - PDO 与 Azure PostgreSQL 建立连接非常慢

linux - bash - 将现有文件复制到现有目录 : no such file or directory