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
ファイルも使用していません
何を試してみるべきか提案はありますか?
どうもありがとう!
OOPS ConceptでMVCを使用しています。そのため、いくつかのルールがあります。
1)クラス名(コントローラー名など)は大文字で始まる必要があります。
例:コントローラ名は「icecream」です。 'I cecream'
ローカルホストでは必須ではないかもしれませんが、サーバーではこれらすべてのルールをチェックします。そうしないと、正しいクラス名を検出できません。
ファイル名とクラス名の最初の文字を大文字に変更しても機能します。
file:controllers/Login.php
class:class Login extends CI_Controller { ... }
クラス名としてのファイル名は大文字で始める必要があります。このルールはモデルにも適用されます。
同じ問題がありました。制御装置の最初の文字を大文字に変更すると助けになりました。
ここで確認できることがいくつかあります。私はあなたとそれぞれを調べます。
1、 localhost(htdocs)からライブサーバーに移動する場合、使用しているPHPのバージョンがサポートされていることを確認する必要があります。
これをテストするには: 'index.php'ファイルを作成し、以下の行のみを追加します。
<?php phpinfo(); ?>
「Ctrl + F」を押して「バージョン」を検索します。 phpバージョンが見つかります。機能をサポートするには、5.3以上である必要があります。
2、を確認してくださいconfig/config.php
を確認し、$config['base_url']
および$config['index_page']
のスクリーンショットを確認してください
ベース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ファイルです)。
上記のいずれもうまくいかない場合は、一言お願いします。手順を追って説明します。
私はこの問題を解決しました、いくつかの変更を行ってください
1-すべてのコントローラークラス名は大文字で始まる必要があります。クラスの最初の文字は大文字でなければなりません。たとえば、クラス名Pagesのコントローラーがあります
したがって、ページではなくページである必要があります
2-コントローラクラスページをPages.php
ではなくpages.php
として保存します
最初の文字は大文字でなければなりません
モデルと同じ、モデルクラスの最初の文字は大文字で、モデルクラスをPages_model.php
ではなくpage_model.php
として保存する必要があります
これがあなたの問題を解決することを願っています
私はこの約1日で立ち往生しました。ファイル名「Filename」を大文字に変更し、コントローラークラス「Classname」の名前を変更します。そしてそれは問題を解決しました。
**class Myclass extends CI_Controller{}
save file: Myclass.php**
application/config/config.php
$config['base_url'] = '';
問題を解決しました。クラス名を変更して、onlyを最初の文字を大文字にします。そのため、「MyClass」のようなものを取得した場合は、「Myclass」に変更します。ファイル名とクラス名の両方に適用します。
私はこの方法でローカルサーバーと本番サーバーでそれをやっています:
ルート:
$route['default_controller'] = 'Home_controller';
ファイル名:
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 {
...
}
ケースに関する問題はもうないはずです:)
Phpの起動後に、ルートフォルダーindex.phpに次の行を追加してください。
ob_start();
これは私のために動作します。
変更することで同様のエラーを修正できました
http://ip-address/html/ci3-fire-starter/htdocs/index.php/
application/config/config.php行26で。
root/application/core/
、MY_Loader.php
、またはMY_Parser.php
ファイルのいずれかを使用しているかどうかにかかわらず、MY_Router.php
フォルダーファイルを確認してください。
その場合は、フォルダから上記のファイルを削除して、違いが生じるかどうかを確認してください。実際、デフォルトのindex.htmlファイルを保持するだけで、そのフォルダーを消去するだけです。
これらのファイルにより、問題が正しいコントローラーの機能にルーティングされることがわかりました。
お役に立てば幸いです!