Learn How To Install PHP 7.3 on an Arch Linux Webserver

May 11, 2019

Table of Contents

Prerequisites

https://www.itweb.services/tutorials/linux-guides/installing-2019-arch-linux-on-a-itweb.services-server”>this article.)

https://www.itweb.services/tutorials/linux-guides/how-to-install-nginx-1-14-on-arch-linux”>Nginx

  • Sudo access.
    • Commands required to be ran as root are prefixed by #. The recommended way to run commands as root is to, as a regular user, prefix each of them with sudo.
  • Have a text editor installed, and be familiar with it, such as vi, vim, nano, emacs or a similar editor
  • Install PHP 7.3 On Your Webserver

    Install PHP and FastCGI for PHP:

    # pacman -S php-fpm
    

    Visit PHP’s timezone list

    Set your timezone. For example, if you chose the category “America” and wanted to use “New_York”, edit /etc/php/php.ini and set the following:

    date.timezone = America/New_York
    

    Start FastCGI for PHP, and make it start after every boot:

    # systemctl enable --now php-fpm
    

    Configure PHP for your webserver.

    For Apache

    Create the file /etc/httpd/conf/extra/php-fpm.conf, with the following contents. Make sure to copy this exactly as-is; a common error is putting spaces around the pipe character, but this is not a shell command, and there can be no spaces:

    DirectoryIndex index.php index.html
    <FilesMatch .php$>
        SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/"
    </FilesMatch>
    

    Allow Apache to use FastCGI by editing /etc/httpd/conf/httpd.conf, and add the following to the end of the LoadModule list:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
    

    To allow using .php files on all websites hosted by Apache, edit /etc/httpd/conf/httpd.conf, and add this to the end. If you’re running multiple host directories; for example, virtual hosts, or separate HTTP/HTTPS directories; and you want to only allow .php files on some of them, edit their configuration files. Within the VirtualHost block, add the following:

    Include conf/extra/php-fpm.conf
    

    Finally, restart Apache:

    # systemctl restart httpd
    

    For Nginx

    Allow Nginx to use FastCGI for PHP by creating the file /etc/nginx/php.conf with the following contents:

    # Correctly handle request like /test.php/foo/blah.php or /test.php/
    fastcgi_split_path_info ^(.+?.php)(/.*)$;
    
    try_files $uri $document_root$fastcgi_script_name =404;
    
    # Mitigate <nowiki>https://httpoxy.org/</nowiki> vulnerabilities
    fastcgi_param HTTP_PROXY "";
    
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    

    Allow Nginx to use FastCGI by editing /etc/nginx/nginx.conf, and to every server block you want to use PHP with, add the following. Alternatively, if you are using virtual hosts, edit each host’s configuration file:

    location ~ .php$ {
        root         /usr/share/nginx/html/;
        include      php.conf;
    }
    

    Restart Nginx:

    # systemctl restart nginx
    

    Test PHP

    Within the appropriate directory, create test.php with the following contents:

    <?php phpinfo(); ?>
    

    In a web browser, visit http://YOUR-SERVER-WEB-ADDRESS-OR-IP/test.php, and you will see a webpage with your PHP version and configuration.

    Remember to delete the test.php test file you just created.

    Need help?

    Do you need help setting up this on your own service?
    Please contact us and we’ll provide you the best possible quote!