web-dev-qa-db-fra.com

CodeIgniter: 404 page introuvable sur le serveur Live

J'ai développé une petite application Web avec CodeIgniter. Après l'avoir testé localement, je suis allé le mettre sur mon serveur Web pour permettre à quelques personnes de tester certaines fonctionnalités. En accédant au site, je reçois: -

Page d'erreur 404 Page non trouvée

Lorsque je le regarde sur ma machine locale, tout se charge et fonctionne parfaitement.

C'est ce que j'ai téléchargé sur le public_html répertoire:

application directory
system directory
assets directory (my assets for the site)
index.php

Tous ceux-ci sont dans le public_html répertoire. Comme je l'ai dit, cela me donne une page d'erreur CodeIgniters 404, donc je sais qu'il voit au moins CodeIgniter. J'ai aussi essayé de changer le $config['base_url'], dans le config.php, à mon URL. Même erreur en changeant cela ou en le laissant vide. J'ai vérifié mes itinéraires et tous ceux qui semblent corrects. Tout se charge également très bien lorsque vous y accédez sur mon ordinateur local.

Je n'utilise pas non plus un .htaccess fichier en ce moment

Des suggestions sur ce que je devrais essayer?
Merci beaucoup!

31
twigman08

Vous utilisez MVC avec OOPS Concept. Donc, il y a certaines règles.

1) Le nom de votre classe (nom du contrôleur) doit commencer par une lettre majuscule.

par exemple: votre nom de contrôleur est "glace". cela devrait être ' I cecream'

Dans localhost, cela n’est peut-être pas obligatoire, mais sur serveur, toutes ces règles seront vérifiées, sinon, il ne pourra pas détecter le bon nom de classe.

85
Binoj T E

Changer la première lettre en majuscule sur le nom du fichier et le nom de la classe fonctionne.

fichier: controllers/Login.php

classe: class Login extends CI_Controller { ... }

Le nom du fichier, en tant que nom de classe, doit commencer par une lettre majuscule. Cette règle s'applique aussi aux modèles.

https://www.codeigniter.com/user_guide/general/models.html

15
PolloZen

J'ai eu le même problème. Changer la première lettre des contrôleurs en majuscule a aidé.

12

Vous pouvez vérifier ici un certain nombre de choses. Je vais passer en revue chacun avec vous.

1, Lorsque vous passez de localhost (htdocs) à un serveur actif, vous devez vous assurer que la version de PHP que vous utilisez est prise en charge.

Pour tester ceci: Créez un fichier 'index.php' et ajoutez uniquement la ligne ci-dessous.

<?php phpinfo(); ?>

Appuyez simplement sur 'Ctrl + F' et recherchez "version". Vous trouverez la version php. Il faudra peut-être 5.3+ pour prendre en charge les fonctionnalités.

2, Vérifiez votre config/config.php et vérifiez votre $config['base_url'] et $config['index_page'] _ capture d'écran ci-dessous

enter image description here

Je recommande de mettre le nom du site dans l'exemple d'URL de base: 'www.site.com/ 'mais supprimez le fichier index.php pour le nettoyage.

,Probablement la raison SO COMMENCER PAR CECI

C'est très probablement le fichier .htaccess. Voici le mien fait par Elliot Haughton. Mettez ceci dans votre répertoire racine et changez la ligne 9 'RewriteBase /' si nécessaire.

<IfModule mod_rewrite.c>
RewriteEngine On
# !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
# slashes.
# If your page resides at
# http://www.example.com/mypage/test1
# then use
# RewriteBase /mypage/test1/
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
<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.
# Submitted by: ElliotHaughin 
ErrorDocument 404 /index.php

(Assurez-vous d'utiliser les deux parties ci-dessus. L'éditeur l'a divisé en deux, mais tout le code ci-dessus est un fichier .htaccess).

Si rien de ce qui précède ne fonctionne, donnez-moi un cri et nous le passerons en revue.

12
Niall Lonergan

J'ai résolu ce problème, veuillez apporter quelques modifications

1- Tous les noms de classe de contrôleurs doivent commencer par une lettre majuscule. Je veux dire que la première lettre du cours devrait être capitale. par exemple, nous avons un contrôleur avec le nom de la classe Pages

il devrait donc s'agir de pages et non de pages

2- enregistrer la classe de contrôleur Pages en tant que Pages.php pas pages.php

alors la première lettre doit être capitale

idem pour le modèle, la première lettre de la classe de modèle doit être en majuscule et enregistrer la classe de modèle sous le format Pages_model.php pas page_model.php

espérons que cela résoudra votre problème

11
Mian Ajmal

Je suis resté coincé avec cela environ un jour où je viens de renommer le nom de fichier "Nom de fichier" en majuscule et de renommer la classe de contrôleur "Nom de classe". et cela a résolu le problème.

**class Myclass extends CI_Controller{}
save file: Myclass.php**

application/config/config.php

$config['base_url'] = '';
5
Ahmad Sayeed

Résolu le problème. Changez le nom de votre classe pour faire seulement la première lettre en majuscule. donc si vous avez quelque chose comme 'MyClass' changez le en 'Myclass'. l'appliquer à la fois au nom du fichier et au nom de la classe.

3
Sheychan

Je le fais sur le serveur local et de production de cette façon:


Itinéraires:

$route['default_controller']   = 'Home_controller';

Noms de fichiers:

  • dans contrôleurs dossier: Home_controller.php
  • dans modèles dossier: Home_model.php
  • dans vues dossier: Home.php

Home_controller.php:

       class Home_controller extends CI_Controller {

           public function index(){

              //loading Home_model
              $this->load->model('Home_model');

              //get data from DB
              $data['db_data']  = $this->Home_model->getData();

              //pass $data to Home.html
              $this->load->view('Home', $data);
           }
       }

Home_model.php:

       class Home_model extends CI_Model {
       ...
       }

Il ne devrait plus y avoir de problèmes avec les cas :)

3
Sid

Essayez d'ajouter la ligne suivante dans le dossier racine index.php après le démarrage de php:

ob_start();

Cela fonctionne pour moi.

1
kds7ap

J'ai pu corriger des erreurs similaires en changeant

http://ip-address/html/ci3-fire-starter/htdocs/index.php/

sur la ligne application/config/config.php 26.

0
Greg Vazquez

Veuillez vérifier les fichiers du dossier root/application/core/ Si vous avez utilisé des fichiers MY_Loader.php, MY_Parser.php Ou MY_Router.php.

Si c'est le cas, essayez en supprimant les fichiers ci-dessus du dossier et vérifiez si cela fait une différence. En fait, il suffit de nettoyer ce dossier en conservant simplement le fichier index.html par défaut.

J'ai trouvé que ces fichiers étaient à l'origine du problème pour acheminer les fonctions du contrôleur approprié.

J'espère que ça t'as aidé!

0
rc.adhikari