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!
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.
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.
J'ai eu le même problème. Changer la première lettre des contrôleurs en majuscule a aidé.
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
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.
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
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'] = '';
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.
Je le fais sur le serveur local et de production de cette façon:
Itinéraires:
$route['default_controller'] = 'Home_controller';
Noms de fichiers:
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 :)
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.
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.
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é!