CodeIgniter incorrect system path on private server

后端 未结 5 472
半阙折子戏
半阙折子戏 2021-01-06 01:27

codeigniter project when uploaded to server gives me the following error.

Your system folder path does not appear to be set correctly. Please open t

相关标签:
5条回答
  • 2021-01-06 01:56

    I have changed my define('ENVIRONMENT', 'development'); to

    if ($_SERVER['SERVER_ADDR'] == '192.168.0.1' || $_SERVER['HTTP_HOST'] == 'localhost')
    {
        define('ENVIRONMENT', 'development');
    }
    else
    {
        define('ENVIRONMENT', 'production');
    }
    

    It worked for me.

    Reference from here

    0 讨论(0)
  • 2021-01-06 02:02

    In my case, I didn't go to mess with .htaccess, actually before going to do that, as it's suggested in the above post, I tried its later part, which is changing the

    $config['index_page'] = 'index.php';
    

    To the following

    $config['index_page'] = '';
    

    And it simply worked for me!

    ~~~~~~~~~~~~~~~~~~ Edit to add some more information ~~~~~~~~~~~~~~~~~~~~~

    My CodeIgniter Directory structure:

    htdocs /
           |_ CI /
                 |_ OnlineStoreApp /
                                   |_ online_store_ci  // This is the CodeIgniter folder
                                   |_ public_html /
                                                  |_ css
                                                  |_ js
                                                  |_ fonts
                                                  |_ .htaccess // see bellow for more details
                                                  |_ index.php // see bellow for more details
    

    And my .htaccess file contains the following:

    DirectoryIndex index.php
    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]
    

    My index.php file is the same one provided by CodeIgniter root folder, but I have to change two lines in it as I place it inside the public_html directory instead of it's original place:

    Note: look for the following two lines within the index.php,
    - $system_path
    - $application_folder
    They have been edited, to point the locations, where system directory and application directory reside in.

    <?php
    
    /*
     *---------------------------------------------------------------
     * APPLICATION ENVIRONMENT
     *---------------------------------------------------------------
     *
     * You can load different configurations depending on your
     * current environment. Setting the environment also influences
     * things like logging and error reporting.
     *
     * This can be set to anything, but default usage is:
     *
     *     development
     *     testing
     *     production
     *
     * NOTE: If you change these, also change the error_reporting() code below
     *
     */
        define('ENVIRONMENT', 'development');
    /*
     *---------------------------------------------------------------
     * ERROR REPORTING
     *---------------------------------------------------------------
     *
     * Different environments will require different levels of error reporting.
     * By default development will show errors but testing and live will hide them.
     */
    
    if (defined('ENVIRONMENT'))
    {
        switch (ENVIRONMENT)
        {
            case 'development':
                error_reporting(E_ALL);
            break;
    
            case 'testing':
            case 'production':
                error_reporting(0);
            break;
    
            default:
                exit('The application environment is not set correctly.');
        }
    }
    
    /*
     *---------------------------------------------------------------
     * SYSTEM FOLDER NAME
     *---------------------------------------------------------------
     *
     * This variable must contain the name of your "system" folder.
     * Include the path if the folder is not in the same  directory
     * as this file.
     *
     */
        $system_path = '../online_store_ci/system';
    
    /*
     *---------------------------------------------------------------
     * APPLICATION FOLDER NAME
     *---------------------------------------------------------------
     *
     * If you want this front controller to use a different "application"
     * folder then the default one you can set its name here. The folder
     * can also be renamed or relocated anywhere on your server.  If
     * you do, use a full server path. For more info please see the user guide:
     * http://codeigniter.com/user_guide/general/managing_apps.html
     *
     * NO TRAILING SLASH!
     *
     */
        $application_folder = '../online_store_ci/application';
    
    /*
     * --------------------------------------------------------------------
     * DEFAULT CONTROLLER
     * --------------------------------------------------------------------
     *
     * Normally you will set your default controller in the routes.php file.
     * You can, however, force a custom routing by hard-coding a
     * specific controller class/function here.  For most applications, you
     * WILL NOT set your routing here, but it's an option for those
     * special instances where you might want to override the standard
     * routing in a specific front controller that shares a common CI installation.
     *
     * IMPORTANT:  If you set the routing here, NO OTHER controller will be
     * callable. In essence, this preference limits your application to ONE
     * specific controller.  Leave the function name blank if you need
     * to call functions dynamically via the URI.
     *
     * Un-comment the $routing array below to use this feature
     *
     */
        // The directory name, relative to the "controllers" folder.  Leave blank
        // if your controller is not in a sub-folder within the "controllers" folder
        // $routing['directory'] = '';
    
        // The controller class file name.  Example:  Mycontroller
        // $routing['controller'] = '';
    
        // The controller function you wish to be called.
        // $routing['function'] = '';
    
    
    /*
     * -------------------------------------------------------------------
     *  CUSTOM CONFIG VALUES
     * -------------------------------------------------------------------
     *
     * The $assign_to_config array below will be passed dynamically to the
     * config class when initialized. This allows you to set custom config
     * items or override any default config values found in the config.php file.
     * This can be handy as it permits you to share one application between
     * multiple front controller files, with each file containing different
     * config values.
     *
     * Un-comment the $assign_to_config array below to use this feature
     *
     */
        // $assign_to_config['name_of_config_item'] = 'value of config item';
    
    
    
    // --------------------------------------------------------------------
    // END OF USER CONFIGURABLE SETTINGS.  DO NOT EDIT BELOW THIS LINE
    // --------------------------------------------------------------------
    
    /*
     * ---------------------------------------------------------------
     *  Resolve the system path for increased reliability
     * ---------------------------------------------------------------
     */
    
        // Set the current directory correctly for CLI requests
        if (defined('STDIN'))
        {
            chdir(dirname(__FILE__));
        }
    
        if (realpath($system_path) !== FALSE)
        {
            $system_path = realpath($system_path).'/';
        }
    
        // ensure there's a trailing slash
        $system_path = rtrim($system_path, '/').'/';
    
        // Is the system path correct?
        if ( ! is_dir($system_path))
        {
            exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".pathinfo(__FILE__, PATHINFO_BASENAME));
        }
    
    /*
     * -------------------------------------------------------------------
     *  Now that we know the path, set the main path constants
     * -------------------------------------------------------------------
     */
        // The name of THIS file
        define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
    
        // The PHP file extension
        // this global constant is deprecated.
        define('EXT', '.php');
    
        // Path to the system folder
        define('BASEPATH', str_replace("\\", "/", $system_path));
    
        // Path to the front controller (this file)
        define('FCPATH', str_replace(SELF, '', __FILE__));
    
        // Name of the "system folder"
        define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/'));
    
    
        // The path to the "application" folder
        if (is_dir($application_folder))
        {
            define('APPPATH', $application_folder.'/');
        }
        else
        {
            if ( ! is_dir(BASEPATH.$application_folder.'/'))
            {
                exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF);
            }
    
            define('APPPATH', BASEPATH.$application_folder.'/');
        }
    
    /*
     * --------------------------------------------------------------------
     * LOAD THE BOOTSTRAP FILE
     * --------------------------------------------------------------------
     *
     * And away we go...
     *
     */
    require_once BASEPATH.'core/CodeIgniter.php';
    
    /* End of file index.php */
    /* Location: ./index.php */
    

    Hope this might help somebody out there!

    CodeIgniter Rocks!

    0 讨论(0)
  • 2021-01-06 02:10

    try this .htaccess on root folder

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
    
        RewriteCond %{REQUEST_URI} ^system.*
        RewriteRule ^(.*)$ /index.php?/$1 [L]
    
        RewriteCond %{REQUEST_URI} ^application.*
        RewriteRule ^(.*)$ /index.php?/$1 [L]
    
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?/$1 [L]
    </IfModule>
    <IfModule !mod_rewrite.c>
        ErrorDocument 404 /index.php
    </IfModule>
    

    assumming that index.php is your index page.

    and change in config.php

    $config['index_page'] = '';
    
    0 讨论(0)
  • 2021-01-06 02:10

    I have same issue then i create controller inside that i have created index method then call cron file with below command it is working for me.

    wget domain_name/google_script -O /dev/null
    
    google_script = "My controller class name"
    

    this solution work for me.

    0 讨论(0)
  • 2021-01-06 02:21

    If You uploading Your project follow these steps

    1. Make sure You have upload application, system, index.php, .htaccess

    2. Modify your config/database.php with your hosted database.

    3. Make sure URL spellings, Cz LINUX Hosting is Case-Sensitive.

    4. Make sure all resources are uploaded to server. (CSS, JS, Images, etc ...)

    Hopes this helps You :)

    0 讨论(0)
提交回复
热议问题