Codeigniter インストールとバージョンアップ2→3 PHP 5→7 メモ
公開日:
:
Codeigniter
Codeigniter インストール
Codeigniter をサイトからダウンロードして解凍する。
Codeigniter 基本設定ファイル編集
application/config/config.php の26行目あたりにサイトのURLを入れる。
$config['base_url'] = 'https://xxxx.xx.xx/';
下階層(test)ならば、以下のようにするだけ。
$config['base_url'] = 'https://xxxx.xx.xx/test/';
Codeigniter アップロード
最低限でよければ、以下の4つをアップロード。
- application フォルダー
- system フォルダー
- index.php
- license.txt
データベース設定
application/config/database.php
76行目あたりにデータベースの設定をする
$db['default'] = array( 'dsn' => '', 'hostname' => 'ホスト名', 'username' => 'ユーザー名', 'password' => 'パスワード', 'database' => 'データベース名', ・・・・・(省略)・・・・・
.htaccess を作る
.htaccess を作り、トップ階層にアップロードする。
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
Codeigniter 404エラーの為、「Hello World!」の表示
https://xxxx.xx.xx/hello
にアクセスで、「Hello World!」が表示するようにする。
application/controllers/hello.php
<?php class Hello extends CI_Controller { public function index() { echo 'Hello World!'; } } ?>
これは、404エラーになる。
ファイル名の先頭を大文字(Hello.php)にしたところ無事に表示。
ファイル名の先頭は大文字にしないと404エラー
ファイル名先頭を小文字(hello.php)だと3.0 以降は、404エラーになるらしい。
CodeIgniter 3.0 以降、全てのクラスファイル (ライブラリ、ドライバ、コントローラ、そしてモデル)の名前は Ucfirst 形式、 つまり大文字で始まるようにしなければなりません。
CodeIgniter ユーザガイド
CodeIgniter で500エラー
CodeIgniter で500エラー内容を表示する
以前のファイルをアップロードすると、500エラー。
エラーになっているファイルの先頭に以下を書くとエラーを表示する。
ini_set("display_errors", 1); error_reporting(E_ALL);
500エラーは全部 PHP7 バージョンアップエラーだった
ファイル名先頭大文字以外は、Codeigniter3へのバージョンアップは特に問題がなく、他はPHP7へのバージョンアップエラーだった。
Message: Methods with the same name as their class will not be constructors in a future version of PHP …
PHPバージョン7からのクラス名と同じ名前のメソッドを定義してると出るエラー。
class クラス名 { public function クラス名() { } } ↓修正 class クラス名 { public function __construct() { } }
undefined function mysql_connect…
PHPバージョン7からの mysql 関数が使えなくなったエラー(多分)。
application/config/database.php
$db['default']['dbdriver'] = 'mysql'; ↓修正 $db['default']['dbdriver'] = 'mysqli';
このように修正したらとりあえずエラー解消した。
Fatal error: Redefinition of parameter…
PHPバージョン7から、関数のパラメータで同じ変数名使っていたらエラー。
function MyFnc($a = 0, $b = 0, $b = 0) { print $a+$b+$b; } ↓修正 function MyFnc($a = 0, $b1 = 0, $b2 = 0) { print $a+$b1+$b2; }
Only variables should be assigned by reference…
参照渡しを要求するメソッドに値を直接渡して呼び出すとエラーが出るので、一旦変数に格納するように修正。
$this->_base_classes =& is_loaded(); ↓修正 $isloadedo = is_loaded(); $this->_base_classes =& $isloadedo;
もう一か所も同じエラーがあり、以下のように修正。
return $_config[0] =& $config; ↓修正 $_config[0] =& $config; return $_config[0];
関連記事
記事はありませんでした
Codeigniter