.htaccess problem with PHP fast_cgi

Discussion in 'General' started by Nap, Jul 20, 2012.

  1. Nap

    Nap Member

    Hi,

    Im running Ubuntu 10.04 LTS, with LAMP and ISPConfig3.0.4.6. I installed Apache2 and PHP as follows: (carriage returns added for formating reasons)
    Code:
    apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork
    apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd
    php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid
    apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick
    imagemagick libapache2-mod-suphp
    I have a .htaccess file in my Joomla install folder where I want to turn on magic_quotes_gpc. I've set it globally on the server to NO, but want to make an exception here. My version of Joomla reports a warning about it which I want to clear.

    Apache AllowOveride is ALL (in ISPConfig for the site)
    PHP is set to fast_cgi (tried with CGI as well)

    My .htaccess file:
    Code:
    ##
    # @version $Id: htaccess.txt 4756 2006-08-25 16:07:11Z stingrey $
    # @package Joomla
    # @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
    # @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    # Joomla! is Free Software
    ##
    
    # -FrontPage-
    
    IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
    
    php_flag magic_quotes_gpc on
    
    <Limit GET POST>
      order deny,allow
      deny from all
      allow from all
    </Limit>
    <Limit PUT DELETE>
      order deny,allow
      deny from all
    </Limit>
    
    
    #####################################################
    #  READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
    #
    # The line just below this section: 'Options FollowSymLinks' may cause problems
    # with some server configurations.  It is required for use of mod_rewrite, but may already
    # be set by your server administrator in a way that dissallows changing it in
    # your .htaccess file.  If using it causes your server to error out, comment it out (add # to 
    # beginning of line), reload your site in your browser and test your sef url's.  If they work,
    # it has been set by your server administrator and you do not need it set here. 
    #
    # Only use one of the two SEF sections that follow.  Lines that can be uncommented
    # (and thus used) have only one #.  Lines with two #'s should not be uncommented
    # In the section that you don't use, all lines should start with #
    #
    # For Standard SEF, use the standard SEF section.  You can comment out
    # all of the RewriteCond lines and reduce your server's load if you
    # don't have directories in your root named 'component' or 'content'
    #
    # If you are using a 3rd Party SEF or the Core SEF solution
    # uncomment all of the lines in the '3rd Party or Core SEF' section
    #
    #####################################################
    
    #####  SOLVING PROBLEMS WITH COMPONENT URL's that don't work #####
    # SPECIAL NOTE FOR SMF USERS WHEN SMF IS INTEGRATED AND BRIDGED
    # OR ANY SITUATION WHERE A COMPONENT's URL's AREN't WORKING
    #
    # In both the 'Standard SEF', and '3rd Party or Core SEF' sections the line:
    # RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] ##optional - see notes##
    # May need to be uncommented.  If you are running your Joomla/Mambo from
    # a subdirectory the name of the subdirectory will need to be inserted into this
    # line.  For example, if your Joomla/Mambo is in a subdirectory called '/test/',
    # change this:
    # RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] ##optional - see notes##
    # to this:
    # RewriteCond %{REQUEST_URI} ^(/test/component/option,com) [NC,OR] ##optional - see notes##
    #
    #####################################################
    
    
    ##  Can be commented out if causes errors, see notes above.
    #Options FollowSymLinks
    
    #
    #  mod_rewrite in use
    
    RewriteEngine On
    
    
    #  Uncomment following line if your webserver's URL
    #  is not directly related to physical file paths.
    #  Update Your Joomla/MamboDirectory (just / for root)
    
    # RewriteBase /
    
    
    ########## Begin - Joomla! core SEF Section
    ############# Use this section if using ONLY Joomla! core SEF
    ## ALL (RewriteCond) lines in this section are only required if you actually
    ## have directories named 'content' or 'component' on your server
    ## If you do not have directories with these names, comment them out.
    #
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] 		##optional - see notes##
    RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$  [NC]
    RewriteRule ^(content/|component/) index.php
    #
    ########## End - Joomla! core SEF Section
    
    
    
    ########## Begin - 3rd Party SEF Section
    ############# Use this section if you are using a 3rd party (Non Joomla! core) SEF extension - e.g. OpenSEF, 404_SEF, 404SEFx, SEF Advance, etc
    #
    #RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] 		##optional - see notes##
    #RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$  [NC]
    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteRule (.*) index.php
    #
    ########## End - 3rd Party SEF Section
    
    
    
    ########## Begin - Rewrite rules to block out some common exploits
    ## If you experience problems on your site block out the operations listed below
    ## This attempts to block the most common type of exploit `attempts` to Joomla! 
    #                              
    # Block out any script trying to set a mosConfig value through the URL
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
    # Block out any script trying to base64_encode crap to send via URL
    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
    # Block out any script that includes a <script> tag in URL
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    # Block out any script trying to set a PHP GLOBALS variable via URL
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    # Block out any script trying to modify a _REQUEST variable via URL
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    # Send all blocked request to homepage with 403 Forbidden error!
    RewriteRule ^(.*)$ index.php [F,L]
    # 
    ########## End - Rewrite rules to block out some common exploits
    
    Note Options FollowSymLinks has been disabled. Site stops working if I turn this back on.


    Why is this being ignored while other .htaccess insturctions in the same file are processed ok?

    Cheers,
    Nap
     
    Last edited: Jul 20, 2012
  2. till

    till Super Moderator

    php_flga is aoption for mod_php and not fastcgi. You can not set options for fastcgi in a .htaccess file. fastcgi redas its instructions only from ini files and you can set site specific options directly in the php.ini field on the options tab of the website settings. The format is the same that you find in php.ini:

    magic_quotes_gpc on

    so dont add php_flag or php_value in front.
     
  3. Nap

    Nap Member

    ok, it's working now.
    I have a feeling I wasn't waiting quite long enough for the change to filter through. (was using browser refresh)
    When I returned a few hours later, after getting some sleep, with PHP left running as mod_PHP, the .htaccess php_flag command worked fine. What a nice present to wake up to. lol

    Cheers,
    Nap
     
  4. Sir Henry

    Sir Henry Member

    @Till: Don't you have to put equal signs in php.ini?
    Code:
    magic_quotes_gpc [B][COLOR="Red"]=[/COLOR][/B] on
    
    Your syntax is for the apache configuration with php_flag or php_value.
     
  5. Nap

    Nap Member

    yes, but I'm using .htaccess.
    This way, I can have it off for the site, but allow it to be turned on for certain applications that are in folders, eg. an old version of Joomla, that I need to update.

    I don't think you can use php.ini like that.
     
  6. falko

    falko Super Moderator

    Yes, that's right.
     

Share This Page