Category: Geekery

  • Change your PHP handler from mod_php (DSO) to suPHP

    Finally, I decided to change my server’s PHP handler to suPHP from mod_php. It’s more secure and I can update my plugins and WordPress files automatically without annoying permission errors.

    Here’s what my php config looks like after the update:

     
    
    php.conf updated to:
    
    # This file was automatically generated by the Cpanel PHP Configuration system
    # If you wish to change the way PHP is being handled by Apache on your system,
    # use the /usr/local/cpanel/bin/rebuild_phpconf script or the WHM interface.
    #
    # Manual edits of this file will be lost when Apache is updated.
    
    
    # SuPHP configuration for PHP5
    LoadModule suphp_module modules/mod_suphp.so
    suPHP_Engine on
    AddType application/x-httpd-php5 .php5 .php4 .php .php3 .php2 .phtml
    
        suPHP_AddHandler application/x-httpd-php5
    
    
    # End of autogenerated PHP configuration.
    
    
    Updating user configurable PHP settings.
    [info] recursion depth is set to: 2
    Restarting Apache
    
    

    Now, I can update WordPress hassle free!

    To change your php handler, you should have WHM root access. This is the only way I know. I think you can change it via SSH, but I haven’t tried it yet.

    Once you’re logged in as root, just go to Service Configuration > Configure PHP and SuExec > Alter Configuration > PHP 5 Handler > Select suPHP.

    Once you’ve selected suPHP, just click “Save New Configuration”.

    That’s it!

  • CHMOD folders, sub-folders, sub-sub-folders, and so on

    If you recently changed your PHP handler to suPHP from mod_php or DSO, then you need to CHMOD all your folders, its sub-folders, sub-sub-folders, and so on to 744 to avoid any internal server errors, specifically internal server 500 errors.

    And also, you need to CHMOD all of your files to 644.

    In order to do this automatically, login as root in your server and go to your home directory, then enter this command via SSH.

    For folders:
    find {path to the folder} -type d -exec chmod 755 {} \;

    For files:
    find {path to the folder} -type f -exec chmod 644 {} \;

    And that’s it! It will change the permissions of all your files and folders under your home directory automatically! It’s like magic!

    If the above method doesn’t work for you, try the xargs method.

    For folders:
    find . -type d -print0 | xargs -0 chmod 0755

    For files:
    find . -type f -print0 | xargs -0 chmod 0644