2013-03-23 28 views
6

Tôi đã dành hơn 5 giờ ngày hôm qua để tìm ra điều gì sai với thiết lập của tôi. Trong thư mục ci213/application/controllers và views, tôi có một bộ điều khiển site.php đơn giản và khung nhìn test.php. Tôi không có ý tưởng về lý do tại sao trang web này không tải. Bất cứ ai có đề xuất về những gì tôi có thể tìm kiếm tiếp theo? Có thể việc ghi nhật ký hoạt động đúng cách? Nếu tôi có thể nhận được lỗi đăng nhập tốt hơn, tôi có thể có nhiều việc hơn để làm việc.Trang mã hóa trang trống và lỗi 500 trong nhật ký apache?

Tôi nghĩ rằng nó phải là một cái gì đó với codeigniter kể từ khi tôi có một index.php và index.html tại apache root (/ var/www) và cũng là một index2.php tại gốc của trang web (/ var/www/vhosts/srp-local/htdocs), khi tôi đi đến localhost/index (php | html) hoặc srp-local/index2.php các trang tải và hiển thị đúng để php và apache đang làm việc.

Đang cố gắng tải trang web mà tôi nhận được một trang trống để tôi nhận thấy nó phải là thứ gì đó với CI. Tôi đang tailing tất cả các tập tin đăng nhập và chỉ có một được cập nhật là access.log trang web với các lỗi sau.

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 gốc

/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 là webroot cho srp-local và index.php của nó được tham chiếu tới thư mục 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 

Tất cả địa điểm log/quyền

/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 

cài đặt tập tin php.ini

error_reporting = E_ALL & ~E_DEPRECATED 
log_errors = On 
error_log = /var/log/apache2/php_errors.log 
+0

kích hoạt báo cáo lỗi trong 'php.ini' (hoặc thông qua htaccess hoặc kịch bản của bạn), thiết lập nó cho' E_ALL', và sau đó kiểm tra php lỗi log –

+0

Tôi đã lỗi đăng nhập cho phép trong tập tin php.ini của tôi . Từ phpinfo() tôi thấy "error_log: /var/log/apache2/php_errors.log" và "log_error: On". – LF4

Trả lời

9

cuối cùng tôi đã tìm thấy một cái gì đó chỉ cho tôi đi đúng hướng. Hai bài viết này đề cập đến cách CI sử dụng @ trong mô-đun cơ sở dữ liệu có thể gây ra vấn đề đó.

php return 500 error but no error log
CodeIgniter project loads blank webpage

tôi vô hiệu hóa tính năng tự động tải các module cơ sở dữ liệu và trang web hoạt động. Bây giờ tôi chỉ cần tìm ra các lỗi cơ sở dữ liệu tôi đã nhận được rằng có thể gây ra CI thất bại. Tôi sẽ cập nhật câu trả lời này khi tôi tìm ra câu trả lời.

Cập nhật: Tôi đã kiểm tra tài khoản/mật khẩu và truy cập cơ sở dữ liệu mọi thứ đang hoạt động. Vấn đề là trình điều khiển mysql php không được cài đặt. Đây là lần đầu tiên của tôi thực sự sử dụng một hệ thống Ubuntu và tôi nghĩ rằng trình điều khiển mysql sẽ được cài đặt với gói php mặc định, mà tôi đã không chính xác về.

Sau khi cài đặt php5-mysqlnd và cho phép thư viện cơ sở dữ liệu trong tự động tải của CI, mọi thứ hoạt động bình thường ngay bây giờ. Thực tế là tôi đã không nhận được bất kỳ lỗi nào thực sự khiến tôi cân nhắc việc thay đổi các khung công tác.

+3

Haha, oh wow may mắn tôi cuối cùng đã đi qua này. Fresh CentOS 6.4 cài đặt và không có gì trong bất kỳ bản ghi lỗi apache về 500 lỗi cho trang web CI của tôi. thực hiện 'yum install php-mysql' đã sửa tất cả, blerrrg – xref

+0

@xref Bạn là người bảo vệ cuộc sống của tôi! – Cong

+0

nếu trình điều khiển mysql cũng được cài đặt và bạn nhận được lỗi, sau đó kiểm tra trình điều khiển mysql. cho tôi, msqli của nó, không phải mysql. –

2

Đây là một lý do khác khiến lỗi có thể không hiển thị:

Tôi gặp vấn đề tương tự. Trong trường hợp của tôi, tôi đã sao chép nguồn từ một môi trường sản xuất. Do đó biến số ENVIRONMENT được xác định trong index.php được đặt thành 'production'. Điều này gây ra error_reporting được đặt thành 0 (không ghi nhật ký). Chỉ cần đặt nó thành 'development' và bạn sẽ bắt đầu thấy thông báo lỗi trong nhật ký apache.

Hóa ra 500 là do một dấu hai chấm bán mất tích trong cơ sở dữ liệu cấu hình :-)

0

Trong trường hợp của tôi (một lớp giỏ hàng) đó là một vấn đề của URL, nhìn vào

/var/log/apache2/error.log 

nếu bạn có cái gì đó như

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

Sau đó, bạn phải thêm tiền tố tên lớp của bạn bằng cách '/index.php/' như thế này

http://localhost/codeigniter/index.php/cart 
3

Hãy đăng ký này, chỉ trong trường hợp nó giúp ai đó ...

Nếu bạn đang ở trên nền tảng lưu trữ dùng chung và không có quyền truy cập vào các thư mục khác với nơi bạn định lưu trữ tệp của mình: php để ném tất cả các lỗi ngay cả khi apache có thể không.

Mở "index.php" nằm trong thư mục gốc của quá trình cài đặt trình mã hóa của bạn;

define('ENVIRONMENT', 'development'); 

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

Thực hiện thay đổi ở trên ngay lập tức bắt đầu hiển thị những gì đã xảy ra với mã và tôi có thể sửa và bắt đầu chạy.

Đừng quên đặt môi trường trình mã hóa của bạn thành "sản xuất" khi bạn đang sửa xong.

+1

Bạn đã cứu mạng tôi! –

+0

Tương tự như vậy. Lời khuyên về cách trả lại các thông báo lỗi hữu ích hơn nên là lời khuyên đầu tiên. – ianp

0

Tôi cũng đang đấu tranh với vấn đề này.

Trên máy chủ mới của tôi, tôi chưa cài đặt mô-đun php mb_string.

yum install php-mbstring và sau đó service httpd restart

0

trong trường hợp của tôi, sai số không được hiển thị vì lỗi hiển thị trong khung cảnh php không được thiết lập để hoạt động. Sau khi cài đặt nó thành lỗi php hoạt động được hiển thị với sự cố gây ra lỗi 500.
Display Error

0

Tôi đã kiểm tra phiên bản php mà là 7.0.xx vì vậy tôi hạ cấp xuống php 5.6.xx và sử dụng các bước sau để có được nó làm việc cho tôi.

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 
Các vấn đề liên quan