0

我编写了一个 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
4

1 回答 1

0

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

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

于 2013-06-01T01:26:30.970 回答