Welcome Guest, Not a member yet? Register   Sign In
Cant set CI_ENVIRONMENT
#1
Exclamation 
(This post was last modified: 06-07-2020, 10:53 AM by thingNumber1.)

I am trying to set my environment dynamically on .htaccess file, but I cant.

This is my `.htaccess` file:

Code:
# Disable directory browsing
Options All -Indexes

# ----------------------------------------------------------------------
# Rewrite engine
# ----------------------------------------------------------------------

# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
    
    # Environment variable
    SetEnv CI_ENVIRONMENT development
    
    Options +FollowSymlinks
    RewriteEngine On

    # If you installed CodeIgniter in a subfolder, you will need to
    # change the following line to match the subfolder you need.
    # http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
    # RewriteBase /

    # Redirect Trailing Slashes...
    RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Rewrite "www.example.com -> example.com"
    #RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

    # Checks to see if the user is attempting to access a valid file,
    # such as an image or css document, if this isn't true it sends the
    # request to the front controller, index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

    # Ensure Authorization header is passed along
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    ErrorDocument 404 index.php
</IfModule>

# Disable server signature start
    ServerSignature Off
# Disable server signature end

But the problem is that the variable `$_SERVER['CI_ENVIRONMENT']` seems to to be rewritten to `$_SERVER['REDIRECT_CI_ENVIRONMENT']`

Why is that? I know I can fix it on the index.php file with something like:

PHP Code:
$_SERVER['CI_ENVIRONMENT'] = $_SERVER['REDIRECT_CI_ENVIRONMENT']; 

But it doesn't feel good. Anybody knows a better solution?
Reply
#2

In order for $_ENV to work, you need to reconfigure variables_order = "GPCSE" in your php.ini.
By default, it does not include E for $_ENV, it was originally variables_order = "GPCS"

So check your php.ini file and make sure it is set correctly.
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply
#3

(This post was last modified: 06-07-2020, 01:07 PM by thingNumber1.)

(06-07-2020, 12:39 PM)InsiteFX Wrote: In order for $_ENV to work, you need to reconfigure variables_order = "GPCSE" in your php.ini

Thank you very much. I already added the `E`. The problem is that the variable is being  generate like:

$_ENV['REDIRECT_CI_ENVIRONMENT'];

Instead of 

$_ENV['CI_ENVIRONMENT']; 


Note the unexpected "REDIRECT_" prefix.
Reply
#4

I prefer setting the .htaccess generated $_SERVER variable in index.php.
Reply
#5

(06-07-2020, 06:05 PM)John_Betong Wrote: I prefer setting the  .htaccess generated $_SERVER variable in index.php.

Both, $_SERVER and $_ENV are prefixed with `REDIRECT_`
Reply
#6

(06-07-2020, 06:10 PM)thingNumber1 Wrote:
(06-07-2020, 06:05 PM)John_Betong Wrote: I prefer setting the  .htaccess generated $_SERVER variable in index.php.

Both, $_SERVER and $_ENV are prefixed with `REDIRECT_`

Code:
<?php // index.php
  define('LOCALHOST', 'localhost'===$_SERVER['SERVER_NAME']);

// DEFAULT TO ONLINE
  $_SERVER['CI_ENVIRONMENT'] = 'production';
  if(LOCALHOST) :
    $_SERVER['CI_ENVIRONMENT'] = 'development';
  endif;
Reply




Theme © iAndrew 2016 - Forum software by © MyBB