web-dev-qa-db-ja.com

Codeigniterの空白ページとApacheログのエラー500?

私は昨日5時間以上かけて、セットアップの何が問題なのかを突き止めようとしました。 ci213/application/controllersおよびviewsディレクトリには、単純なsite.phpコントローラーとtest.phpビューがあります。このサイトが読み込まれない理由については、私にはわかりません。誰かが私が次に探すことができるものについての提案がありますか?たぶんそれが正しく機能していることをログに記録しますか?より良いログエラーを取得できれば、さらに多くの作業を行うことができます。

Apachesルート(/ var/www)にindex.phpとindex.htmlがあり、サイトルート(/ var/www/vhosts/srp-local)にもindex2.phpがあるので、codeigniterを使用する必要があると考えました。 /htdocs)、localhost/index.(php|html)またはsrp-local/index2.phpにアクセスすると、ページが正しく読み込まれて表示されるため、phpとApacheが機能します。

サイトを読み込もうとすると空白のページが表示されるので、CIを使用したものである必要があると考えました。私はすべてのログファイルを追跡していますが、更新を取得するのはサイトaccess.logだけで、次のエラーがあります。

127.0.0.1 - - [23/Mar/2013:09:00:28 -0600] "GET / HTTP/1.1" 500 381 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0"

config.php

$config['base_url'] = 'http://srp-local/'; # My hosts file is configured for this.
$config['log_threshold'] = 4;
$config['log_path'] = '/var/www/vhosts/srp-local/logs/ci_error.log';

controllers/site.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Site extends CI_Controller
{
    public function index()
    {
        $this->load->view('test');
    }
}

views/test.php

<html>
<head>
</head>
<body>
<?php echo "PHP is working and the 'test' view was loaded"; ?>
</body>
</html>

Apacheルート

/var/www/vhosts
$ ll
drwxrwsr-x  6 krizzo www-data 4096 Mar 22 10:45 it355
drwxrwsr-x  6 krizzo www-data 4096 Mar 22 17:45 srp-local

htdocsはsrp-localのWebルートであり、そのindex.phpはci213フォルダーを参照します。

/var/www/vhosts
$ ll srp-local/
drwxrwsr-x 2 krizzo www-data 4096 Mar 22 17:06 cgi-bin
drwxrwsr-x 4 krizzo www-data 4096 Mar 22 17:14 ci213
drwxrwsr-x 2 krizzo www-data 4096 Mar 22 17:19 logs
drwxrwsr-x 5 krizzo www-data 4096 Mar 22 17:26 htdocs

すべてのログの場所/許可

/var/log/Apache2/
    -rw-rw-rw- 1 www-data adm     0 Mar 23 08:52 php_errors.log
    -rw-r----- 1 root     adm 12191 Mar 23 09:32 access.log
    -rw-r----- 1 root     adm  4858 Mar 23 09:32 error.log

/var/www/vhosts/srp-local/logs/
    -rw-r--r-- 1 root   www-data  3227 Mar 22 19:42 error.log
    -rw-rw-r-- 1 krizzo www-data     0 Mar 23 09:37 ci_error.log
    -rw-r--r-- 1 root   www-data 12983 Mar 23 09:38 access.log

php.iniファイルの設定

error_reporting = E_ALL & ~E_DEPRECATED
log_errors = On
error_log = /var/log/Apache2/php_errors.log
9
LF4

私はついに私を正しい方向に向ける何かを見つけました。これらの2つの投稿では、CIがデータベースモジュールで@を使用する方法がその問題の原因である可能性があると述べています。

phpは500エラーを返しますが、エラーログは返しません
CodeIgniterプロジェクトは空白のウェブページをロードします

データベースモジュールの自動読み込みを無効にすると、サイトは機能します。ここで、CIが失敗する原因となる可能性のあるデータベースエラーを把握する必要があります。わかったら、この回答を更新します。

更新:アカウント/パスワードとデータベースへのアクセスを確認しました。すべてが機能していました。問題は、phpmysqlドライバーがインストールされていないことでした。 Ubuntuシステムを実際に使用するのはこれが初めてであり、mysqlドライバーはデフォルトのphpパッケージでインストールされると思いましたが、これについては間違っていました。

Php5-mysqlndをインストールし、CIの自動ロードでデータベースライブラリを有効にすると、すべてが正しく機能するようになります。エラーが発生しなかったという事実は、フレームワークの変更を本当に考えさせています。

10
LF4

これを投稿して、誰かを助ける場合に備えて...

共有ホスティングプラットフォームを使用していて、ファイルをホストすることになっている場所以外のディレクトリにアクセスできない場合:トリックは、Apacheができなくても、phpにすべてのエラーをスローさせることでした。

Codeigniterインストールのルートフォルダーにある「index.php」を開きます。

define('ENVIRONMENT', 'development');

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
        {
            case 'development':
            error_reporting(E_ALL);
            /*added line below*/
            ini_set('display_errors', '1');
            break;
......

上記の変更を行うと、すぐにコードの問題点が表示され始め、修正して稼働させることができました。

修正が完了したら、codeigniter環境を「本番」に設定することを忘れないでください。

6
jahackbeth

エラーが表示されない可能性があるもう1つの理由は次のとおりです。

私も同じ問題を抱えていました。私の場合、本番環境からソースをコピーしました。したがって、index.phpで定義されたENVIRONMENT変数は'production'に設定されました。これにより、error_reportingが0に設定されました(ロギングなし)。 'development'に設定するだけで、Apacheログにエラーメッセージが表示されるようになります。

500は、データベース構成にセミコロンがないことが原因であることが判明しました:-)

4
Aswin Kumar

7.0.xxであったphpバージョンを確認したので、php 5.6.xxにダウングレードし、次の手順を使用して動作させました。

Sudo a2dismod proxy_fcgi proxy; Sudo service Apache2 restart
Sudo add-apt-repository ppa:ondrej/php
Sudo apt-get update
Sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-mbstring php7.0-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0
0
Shashank Saxena

私の場合(カートクラス)はURLの問題でした、見てください

/var/log/Apache2/error.log

あなたがのようなものを持っているなら

[client 127.0.0.1] File does not exist: ...

次に、このようにクラス名の前に「/index.php/」を付ける必要があります

http://localhost/codeigniter/index.php/cart
0
alemol

私もこの問題に苦しんでいました。

新しいサーバーには、php mb_stringモジュールがインストールされていませんでした。

yum install php-mbstringそしてservice httpd restart

0
Ando

私の場合、php設定の表示エラーがアクティブに設定されていなかったため、エラーは表示されませんでした。それをアクティブに設定した後、500エラーを引き起こしていた問題でエラーが表示されました。
Display Error

0
Regolith