shell_exec()表现得很奇怪

时间:2013-06-01 01:23:23

标签: php shell-exec

我编写了一个C程序,通过查找大型CSV数据库将IP地址转换为国家/地区。我试图通过shell_exec来调用它,但是出了点问题。

<?php
 error_reporting(E_ALL);
 ini_set('display_errors','1');

 set_time_limit(0);

 $ipaddress = $_SERVER['REMOTE_ADDR'];
 $country = shell_exec("/var/www/html/ip2country/ip2country $ipaddress");
?>

我查了一下:

  • PHP未以安全模式运行(safe_mode = Off);
  • 当我关闭IP地址并返回(按预期)Usage: ip2country IPAddress时,命令执行正常 - 所以我认为它不是权限;
  • 我已将set_time_limit设置为0所以就我所知,这不是暂时性的事情。

我做错了什么?

[这可能更像是Linux的东西而不是PHP的东西。]

测试命令的输出:

[root@rhel ip2country]# /var/www/html/ip2country/ip2country 4.2.2.2
United States

[root@rhel ip2country]# sudo -u apache /var/www/html/ip2country/ip2country 4.2.2.2
United States

[user@rhel ip2country]$ sudo -u apache /var/www/html/ip2country/ip2country 4.2.2.2
// No output whatsoever

[user@rhel ip2country]$ sudo -u apache /var/www/html/ip2country/ip2country
Usage: /var/www/html/ip2country/ip2country IPAddress

1 个答案:

答案 0 :(得分:0)

尝试执行whoami而不是您的程序,然后,当您知道用户用于收集它时,请检查他是否具有适当的权限。

如果你说,没有IP它可以正常工作,那么,我想,你使用一些数据库或文件来查找IP。也许这个用户无法访问该数据库或文件。