【发布时间】:2013-11-15 04:55:31
【问题描述】:
做一个就够了
sudo setcap cap_net_raw=eip /usr/bin/php5
能够在 Linux 中的 PHP(不是 CLI)中使用 RAW SOCKETS 吗?
如果是,那么它不工作(但开始在 CLI 中工作但不使用 Apache)
所以我想我也必须将这些权限授予 Apache,但我不知道如何。
你能帮帮我吗?
来自 PHP 脚本的错误:
Warning: socket_create(): Unable to create socket [1]: Operation not permitted in
php 脚本:
$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
$socket = socket_create(AF_INET, SOCK_RAW, 1);
if ($socket !== false) {
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 10, 'usec' => 0));
echo 'Creating PING Socket !';
socket_connect($socket, gethostbyname('noczone.com'), null);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255)) {
$result = microtime(true) - $ts;
} else {
echo 'Error Code : No PING';
}
socket_close($socket);
} else {
echo 'Failed Creating PING Socket !';
}
【问题讨论】:
-
首先,您需要确保您的 PHP 已经使用套接字编译 php.net/manual/en/sockets.installation.php 如果已经编译好了,那就太好了。你得到什么错误?确保打开错误报告:display_errors('On'); ini_set('error_reporting', 'E_ALL');然后重新运行脚本。你能用你得到的错误更新你的问题吗?
-
Warning: socket_create(): Unable to create socket [1]: Operation not permitted in -
你的 php.ini 中是否禁用了某个功能,是否也关闭了安全模式?
-
没有禁用任何功能(我正在使用 socket_create 进行 tcp 连接,这很好)。安全模式已关闭
标签: php apache raw-sockets