Send magic packet from php to wake up a host using "Wake on Lan"
wake-on-lan.php
started as a one file drop in tool for waking up computers when they are suspended.
Note: As there where numerous issues using this code, even it worked fine in my environment, at the end of 2021 i decided to refactor the whole thing.
- Now it is really a one file drop in.
- Version update for bootstrap and jquery.
- Configuration is now saved to the backend. (Make sure web server can write to it.)
- Host check is now done via connection test to ssh, rdp, http and https.
- MAC address can now be typed in using dash (-) or colon (:) - both will work.
- No longer requires the raw-Sockets feature. All is done via the sockets extension in php.
- PHP5 or PHP7
- Internet connection for CDN includes (.js, .css)
- Sockets extension must be enabled
- Web server must be allowed to write to the file
config.json
- Either clone the repository or download the zip file
- Copy the file
wake-on-lan.php
to a directory on your web server
Note: If you need to copy the file to a remote machine use scp
or sftp
.
The way the php sockets extension is enabled slidely differes with every php installation.
Here are basic steps for linux users:
- Go to the directory that contains your
php.ini
file. - Open the file with text editor
- Search for the line
;extension=sockets
- Remove the trailing semicolon (;) to enable this feature.
- Save your
php.ini
file - Reload your webserver configuration.
Open your favorite browser and navigate to the wake-on-lan.php
url.
Now you can start adding your the hosts you want to wake.
To add a host simply fill the edit fields at the bottom of the table and press the blue button with the plus sign.
You need to fill the follwing input fields:
- Mac-Address - Type the mac address of the host you wish to wake. The values can be separated by a dash (-) or a colon (:) - both will work.
- IP-Address - Type the ip address of the host. This is required to query the "host up" state and calculate the broadcast address of the magic packet.
- Subnet Size - type in the subnet size in CIDR notation.
To remove a host simply click on the trashcan icon of the host you want to remove.
You can save the configuration by choosing Tools -> Save COnfiguration.
The configuration will be saved to a json file in the same directory as of wake-on-lan.php
.
The web server needs permission to write to the file. You you may need to adjust folder permission accordingly.
-
Download Configuration - This will download the
config.json
file to your computer. -
Export Configuration - open a modal window with the configuration as a json file. Copy the contents of the edit window and save the configuration as a file.
-
Import Configuration - open a modal window with a text box. Paste your configuration into the text box and click on Import.
-
Load Configuration - Load the configuration from the
config.json
file from the web server. -
Save Configuration - Save the configuration to the file
config.json
on the web server. Make sure the web server process is allowed to write to the file. -
Wake up! - send a magic packet for the selected host.
-
Remove - delete the row from the configuration. The data of the deleted row is placed in the input fields for adding a new host. If you accidently removed a host you can simply press Add again to add it again.
-
Add - adds a new entry to the table. Fill in the text boxes and press Add.
Does not run under linux. Because the linux user used to run php code on the server side usually has very limited permission it cannot create the raw socket to send the magic packet.
Note: This caveat no longer applies. Using the sockets extension wake-on-lan.php
no longer suffers this shortcoming.
wake-on-lan.php
is published under MIT license.