Install and Configure PHP On An OpenWRT Router [with TinyFileManager]

What is OpenWRT?

OpenWRT is an open-source project for embedded operating systems based on Linux, primarily used on embedded devices to route network traffic. The main components are Linux, util-linux, musl, and BusyBox. All components have been optimized to be small enough to fit into the limited storage and memory available in home routers. -https://en.wikipedia.org/wiki/OpenWrt

Installing and Configuring PHP

  1. Log into the OpenWRT web interface
  2. Select System > Software from the top navigation menu
  3. Click the Updates lists... button
  4. Using the filter, install the following packages
    alternatively, run opkg install luci-app-uhttpd php7 php7-cgi tar from the command line
    • luci-app-uhttpd
    • php7
    • php7-cgi
    • tar
  5. Filter the software list to zoneinfo > Install required timezone files from the listing
  6. Refresh the OpenWRT page then select Services > uHTTPd from the top navigation menu
  7. Select the Full Web Server Settings tab
  8. On the Index page(s) field, add an entry for index.php
  9. On the CGI filetype handler field, add an entry for .php=/usr/bin/php-cgi
  10. Scroll to the bottom of the page > Click Save & Apply
  11. SSH into the OpenWRT device
  12. Run the following command to create a test php file
    # create a phpinfo test file
    echo "<?php phpinfo(); ?>" > /www/phpinfo.php
  13. Open a new tab in the web browser and navigate to http://DNSorIP/phpinfo.php

Installing TinyFileManager

  1. Back in the SSH session, run the following commands
    # install required php modules
    opkg install php7-mod-ctype php7-mod-fileinfo php7-mod-iconv php7-mod-json php7-mod-mbstring php7-mod-session php7-mod-zip
    # download tinyfilemanager
    wget -O tinyfilemanager.tar.gz https://api.github.com/repos/prasathmani/tinyfilemanager/tarball/2.4.7 --no-check-certificate
    # create tinyfilemanager directory
    mkdir tinyfilemanager
    # extract the .tar.gz
    tar xvzf ./tinyfilemanager.tar.gz -C ./tinyfilemanager --strip-components=1
    # move tinyfilemanager.php to the webroot
    cp ./tinyfilemanager/tinyfilemanager.php /www
  2. Back in the web browser, navigate to http://DNSorIP/tinyfilemanager.php
  3. Login with username admin password admin@123

    NOTE: Authentication can be edited or disabled completely by editing tinyfilemanager.php and searching for $auth_users