Antworten auf deine Fragen:
Neues Thema erstellen

php socket error

Philipp88

Nicht mehr ganz neu hier

Hallo ihr,

ich möchte per PHP ein WOL- Script schreiben.
Doch bei mir kommt eine Fehlermeldung wenn ich ein Socket öffnen will :(

Warning: socket_create() expects parameter 3 to be long, string given in /i-data/e7e241ba/server/pages/wakeup.php on line 37
Error creating socket!
Warning: socket_last_error() expects parameter 1 to be resource, null given in /i-data/e7e241ba/server/pages/wakeup.php on line 40

Warning: socket_last_error() expects parameter 1 to be resource, null given in /i-data/e7e241ba/server/pages/wakeup.php on line 40
Error code is '' - Success

Ich finde einfach den Fehler nicht, außer das ich noch die php Erweiterung aktivieren musste sehe ich keinen Fehler :(

PHP:
<?php
$router = "192.168.1.255";                      // ip des Routers
$mac = $_GET["mac"];
if (isset($_POST["up"])) {
  $mac = $_POST["mac"];
}
WakeOnLan($router, $mac);

flush();
function WakeOnLan($addr, $mac) {
  $addr_byte = explode(':', $mac);
  $hw_addr = '';
  for ($a = 0; $a < 6; $a++)
    $hw_addr .= chr(hexdec($addr_byte[$a]));
  $msg = chr(255) . chr(255) . chr(255) . chr(255) . chr(255) . chr(255);
  for ($a = 1; $a <= 16; $a++)
    $msg .= $hw_addr;
// send it to the broadcast address using UDP 
// SQL_BROADCAST option isn't help!! 
  $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
  if ($s == false) {
    echo "Error creating socket!\n";
    echo "Error code is '" . socket_last_error($s) . "' - " . socket_strerror(socket_last_error($s));
  } else {
// setting a broadcast option to socket: 
    $opt_ret = socket_set_option($s, 1, 6, TRUE);
    if ($opt_ret < 0) {
      echo "setsockopt() failed, error: " . strerror($opt_ret) . "\n";
    }
    $e = socket_sendto($s, $msg, strlen($msg), 0, $addr, 2050);
    echo $e;
    socket_close($s);
    echo "Magic Packet sent (" . $e . ") to " . $addr . ", MAC=" . $mac;
  }
}
?>

Ich hoffe ihr könnt mir helfen.

Grüße und danke im Vorraus
Philipp
 

Duddle

Posting-Frequenz: 14µHz

AW: php socket error

Hmm, das SOL_UDP scheint nicht definiert zu sein. Lass dir mal SOL_UDP per echo() ausgeben, das sollte dir eine Zahl liefern. Wenn nicht, versuch mal
PHP:
<?php echo getprotobyname("udp"); ?>
Auf welchem Betriebssystem läuft das und in welcher PHP-Version? Steht in der phpinfo(), dass "Sockets Support" auf "enabled" ist?


Duddle
 

Philipp88

Nicht mehr ganz neu hier

AW: php socket error

Danke für die Antwort ;)

Also mein NSA System wo der Server drauf läuft hat ein LINUX NSA320 2.6.31.8 #2 System

Bei
PHP:
echo getprotobyname("udp");

gibt er nix aus :(

Ich habe schnell das nochmal lokal ausgeben lassen und da kommt eine 17 als Ausgabe.
Kann ich das irgendwie nachinstallieren auf dem nsa?

Ja Sockets Support ist enabled
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: php socket error

Ich finde auf Anhieb keine Information über die Distribution, die auf diesem NSA-Gerät ([OffTopic]Ich dachte zuerst, du scherzt bzgl. des Namens...[/OffTopic]) läuft.
Jedenfalls muss für Konstanten wie SOL_UDP scheinbar die Datei /etc/protocols lesbar sein, welche dann wohl bei dir nicht vorhanden ist. Diese Datei sieht (bei mir) so aus:
Code:
# Internet (IP) protocols
#
# Updated from http://www.iana.org/assignments/protocol-numbers and other
# sources.
# New protocols will be added on request if they have been officially
# assigned by IANA and are not historical.
# If you need a huge list of used numbers please install the nmap package.

ip	0	IP		# internet protocol, pseudo protocol number
#hopopt	0	HOPOPT		# IPv6 Hop-by-Hop Option [RFC1883]
icmp	1	ICMP		# internet control message protocol
igmp	2	IGMP		# Internet Group Management
ggp	3	GGP		# gateway-gateway protocol
ipencap	4	IP-ENCAP	# IP encapsulated in IP (officially ``IP'')
st	5	ST		# ST datagram mode
tcp	6	TCP		# ************ control protocol
egp	8	EGP		# exterior gateway protocol
igp	9	IGP		# any private interior gateway (Cisco)
pup	12	PUP		# PARC universal packet protocol
udp	17	UDP		# user datagram protocol
hmp	20	HMP		# host monitoring protocol
xns-idp	22	XNS-IDP		# Xerox NS IDP
rdp	27	RDP		# "reliable datagram" protocol
iso-tp4	29	ISO-TP4		# ISO Transport Protocol class 4 [RFC905]
xtp	36	XTP		# Xpress Transfer Protocol
ddp	37	DDP		# Datagram Delivery Protocol
idpr-cmtp 38	IDPR-CMTP	# IDPR Control Message Transport
ipv6	41	IPv6		# Internet Protocol, version 6
ipv6-route 43	IPv6-Route	# Routing Header for IPv6
ipv6-frag 44	IPv6-Frag	# Fragment Header for IPv6
idrp	45	IDRP		# Inter-Domain Routing Protocol
rsvp	46	RSVP		# Reservation Protocol
gre	47	GRE		# General Routing Encapsulation
esp	50	IPSEC-ESP	# Encap Security Payload [RFC2406]
ah	51	IPSEC-AH	# Authentication Header [RFC2402]
skip	57	SKIP		# SKIP
ipv6-icmp 58	IPv6-ICMP	# ICMP for IPv6
ipv6-nonxt 59	IPv6-NoNxt	# No Next Header for IPv6
ipv6-opts 60	IPv6-Opts	# Destination Options for IPv6
rspf	73	RSPF CPHB	# Radio Shortest Path First (officially CPHB)
vmtp	81	VMTP		# Versatile Message Transport
eigrp	88	EIGRP		# Enhanced Interior Routing Protocol (Cisco)
ospf	89	OSPFIGP		# Open Shortest Path First IGP
ax.25	93	AX.25		# AX.25 frames
ipip	94	IPIP		# IP-within-IP Encapsulation Protocol
etherip	97	ETHERIP		# Ethernet-within-IP Encapsulation [RFC3378]
encap	98	ENCAP		# Yet Another IP encapsulation [RFC1241]
#	99			# any private encryption scheme
pim	103	PIM		# Protocol Independent Multicast
ipcomp	108	IPCOMP		# IP Payload Compression Protocol
vrrp	112	VRRP		# Virtual Router Redundancy Protocol
l2tp	115	L2TP		# Layer Two Tunneling Protocol [RFC2661]
isis	124	ISIS		# IS-IS over IPv4
sctp	132	SCTP		# Stream Control ************ Protocol
fc	133	FC		# Fibre Channel
udplite	136	UDPLite		# UDP-Lite
mpls-in-ip 137	MPLS-in-IP	# MPLS-in-IP [RFC4023]
manet	138			# MANET Protocols
hip	139	HIP		# Host Identity Protocol
Dort siehst du die 17 als Konstante für UDP.
Nein, du kannst die Datei wahrscheinlich nicht einfach anlegen.

Ich finde aber auch nicht, wie man schick an diesem Problem vorbei-arbeiten kann. Du könntest versuchen, alle Zahlen zwischen 0 und 20(?) anstelle von SOL_UDP einzusetzen. Vielleicht hast du Glück und eine korrespondiert mit UDP :)


Duddle
 

Philipp88

Nicht mehr ganz neu hier

AW: php socket error

Hi,

Ja das mit den Protokols habe ich danach auch schon gefunden.
Leider gibt es wie du schon sagtest die Datei bei mir nicht. Anlegen konnte ich sie zwar, doch wurde sie nicht beachtet bzw. wurde nach reboot wieder gelöscht :(
Ich habe mal in ein Supportforum geschrieben.

Werde mal probieren die Zahl reinzuschreiben.

Werde mich dann melden ob es geklappt hat.

edit: Juhuu es hat geklappt :) Habe einfach als letzten Parameter die 17 eingegeben.
Vielen vielen Danke :)
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben