web-dev-qa-db-ja.com

CodeIgniter:ライブサーバーに404ページが見つかりません

CodeIgniterを使用して小さなWebアプリケーションを開発しています。ローカルでテストした後、他の数人がいくつかの機能をテストできるように、Webサーバーに配置しました。私が得るサイトに移動している間:-

404ページが見つかりませんエラーページ

ローカルマシンで表示すると、すべてがロードされ、完全に実行されます。

これは私がpublic_htmlディレクトリにアップロードしたものです:

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

これらはすべてpublic_htmlディレクトリにあります。先ほど言ったように、CodeIgniters 404エラーページが表示されるので、少なくともCodeIgniterが表示されていることがわかります。また、$config['base_url']内のconfig.phpをURLに変更してみました。それを変更するか、空白のままにすると同じエラーになります。ルートを確認しましたが、それらはすべて正しいようです。ローカルマシンでナビゲートするときに、すべてが正常にロードされます。

現時点では、.htaccessファイルも使用していません

何を試してみるべきか提案はありますか?
どうもありがとう!

31
twigman08

OOPS ConceptでMVCを使用しています。そのため、いくつかのルールがあります。

1)クラス名(コントローラー名など)は大文字で始まる必要があります。

例:コントローラ名は「icecream」です。 'I cecream'

ローカルホストでは必須ではないかもしれませんが、サーバーではこれらすべてのルールをチェックします。そうしないと、正しいクラス名を検出できません。

85
Binoj T E

ファイル名とクラス名の最初の文字を大文字に変更しても機能します。

file:controllers/Login.php

class:class Login extends CI_Controller { ... }

クラス名としてのファイル名は大文字で始める必要があります。このルールはモデルにも適用されます。

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

15
PolloZen

同じ問題がありました。制御装置の最初の文字を大文字に変更すると助けになりました。

12

ここで確認できることがいくつかあります。私はあなたとそれぞれを調べます。

1、 localhost(htdocs)からライブサーバーに移動する場合、使用しているPHPのバージョンがサポートされていることを確認する必要があります。

これをテストするには: 'index.php'ファイルを作成し、以下の行のみを追加します。

<?php phpinfo(); ?>

Ctrl + F」を押して「バージョン」を検索します。 phpバージョンが見つかります。機能をサポートするには、5.3以上である必要があります。

2、を確認してくださいconfig/config.phpを確認し、$config['base_url']および$config['index_page']のスクリーンショットを確認してください

enter image description here

ベースURLの例: 'www.site.com/'にサイト名を入れることをお勧めしますが、クリーニングのためにindex.phpを削除します。

ほとんどの理由SOこれで開始

ほとんどの場合、.htaccessファイルです。エリオット・ハウトンが作った鉱山です。これをルートディレクトリに配置し、必要に応じて9行目「RewriteBase /」を変更します。

<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

(必ず上記の両方の部分を使用してください。エディターは2つに分割しましたが、上記のコードはすべて1つの.htaccessファイルです)。

上記のいずれもうまくいかない場合は、一言お願いします。手順を追って説明します。

12
Niall Lonergan

私はこの問題を解決しました、いくつかの変更を行ってください

1-すべてのコントローラークラス名は大文字で始まる必要があります。クラスの最初の文字は大文字でなければなりません。たとえば、クラス名Pagesのコントローラーがあります

したがって、ページではなくページである必要があります

2-コントローラクラスページをPages.phpではなくpages.phpとして保存します

最初の文字は大文字でなければなりません

モデルと同じ、モデルクラスの最初の文字は大文字で、モデルクラスをPages_model.phpではなくpage_model.phpとして保存する必要があります

これがあなたの問題を解決することを願っています

11
Mian Ajmal

私はこの約1日で立ち往生しました。ファイル名「Filename」を大文字に変更し、コントローラークラス「Classname」の名前を変更します。そしてそれは問題を解決しました。

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

application/config/config.php

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

問題を解決しました。クラス名を変更して、onlyを最初の文字を大文字にします。そのため、「MyClass」のようなものを取得した場合は、「Myclass」に変更します。ファイル名とクラス名の両方に適用します。

3
Sheychan

私はこの方法でローカルサーバーと本番サーバーでそれをやっています:


ルート:

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

ファイル名:

  • in controllers folder:Home_controller.php
  • models folder:Home_model.php
  • in views folder: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 {
       ...
       }

ケースに関する問題はもうないはずです:)

3
Sid

Phpの起動後に、ルートフォルダーindex.phpに次の行を追加してください。

ob_start();

これは私のために動作します。

1
kds7ap

変更することで同様のエラーを修正できました

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

application/config/config.php行26で。

0
Greg Vazquez

root/application/core/MY_Loader.php、またはMY_Parser.phpファイルのいずれかを使用しているかどうかにかかわらず、MY_Router.phpフォルダーファイルを確認してください。

その場合は、フォルダから上記のファイルを削除して、違いが生じるかどうかを確認してください。実際、デフォルトのindex.htmlファイルを保持するだけで、そのフォルダーを消去するだけです。

これらのファイルにより、問題が正しいコントローラーの機能にルーティングされることがわかりました。

お役に立てば幸いです!

0
rc.adhikari