2013-05-22 42 views
5

Có đủ để làm mộtPHP và ổ cắm RAW trên linux

sudo setcap cap_net_raw=eip /usr/bin/php5 

để có thể sử dụng ổ cắm thô trong PHP (không CLI) trong Linux?

Nếu có, cũng nó không hoạt động (nhưng bắt đầu làm việc trong CLI nhưng không sử dụng Apache)

Vì vậy, tôi đoán tôi phải từ bỏ những quyền Apache là tốt, nhưng tôi không thể tìm ra cách .

Bạn có thể giúp tôi không?

lỗi từ kịch bản PHP: Warning: socket_create(): Unable to create socket [1]: Operation not permitted in

kịch bản 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 !'; 
     } 
+0

Trước hết, bạn cần đảm bảo rằng PHP của bạn đã được biên dịch bằng các ổ cắm http://www.php.net/manual/en/sockets.installation.php Nếu đã, sau đó tuyệt vời. Bạn nhận được lỗi nào? Đảm bảo bạn bật báo cáo lỗi trên: display_errors ('Bật'); ini_set ('error_reporting', 'E_ALL'); và sau đó chạy lại tập lệnh. Bạn có thể cập nhật câu hỏi của mình với các lỗi bạn nhận được không? – DarkMantis

+0

'Cảnh báo: socket_create(): Không thể tạo ổ cắm [1]: Thao tác không được cho phép trong ' –

+0

Bạn có chức năng bị vô hiệu hóa trong php.ini của bạn, cũng là safe_mode tắt? – DarkMantis

Trả lời

2

Nhiều khả năng thông dịch PHP được thực hiện như một module trong Apache (bạn có thể thấy điều này từ php_sapi_name() hoặc PHP_SAPI hằng số trong PHP, hoặc từ tệp ini httpd).

Trong trường hợp này, bạn cần phải cung cấp khả năng thực thi httpd.

+0

nó đã cho tôi 'apache2handler' không thể tìm thấy nó –

3

Bạn đã thử: sudo setcap cap_net_raw=eip $(which httpd)?

Lỗi bạn đang gặp phải là gì?

+0

' root @ exclulist:/usr/sbin # sudo setcap cap_net_raw = eip $ (httpd) cách sử dụng: setcap [-q] [-v] (- r | - | ) [... (-r | - | ) ] Lưu ý phải là tệp thông thường (không có liên kết tượng trưng). root @ exclulist:/usr/sbin # sudo setcap cap_net_raw = eip $ (mà apache2) Không thể đặt khả năng trên tệp '/ usr/sbin/apache2' (đối số không hợp lệ) Giá trị của đối số khả năng không được phép cho một tập tin. Hoặc tệp không phải là tệp thông thường (không phải liên kết tượng trưng) ' –

+0

setcap cap_net_bind_service = + ep/usr/sbin/httpd Bạn đang cố làm gì nữa? –

+0

yup đã thử điều đó, không hoạt động. –

Các vấn đề liên quan