CodeIgniter 500 内部服务器错误

Posted

技术标签:

【中文标题】CodeIgniter 500 内部服务器错误【英文标题】:CodeIgniter 500 Internal Server Error 【发布时间】:2011-11-14 17:26:15 【问题描述】:

我下载了一个使用 CodeIgniter 编写的 php 脚本。当我从 localhost 运行它时,转到 admin 文件夹时,它再次显示 localhost。此外,当从我的网络主机运行时,它会显示 500 内部服务器错误。

我从http://localhost/myproj 运行该站点,它可以工作。然后,当我尝试转到位于 http://localhost/myproj/administrator 的管理页面时,它会给出 500 内部服务器错误。

我在这里读到这可能是由于 .htaccess 文件中的代码错误。这是我目前的 .htaccess 文件

RewriteEngine On
RewriteBase /

RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

RewriteCond %REQUEST_URI ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

# Without mod_rewrite, route 404's to the front controller
ErrorDocument 404 /index.php

请帮助我。我知道这可能是一个很小的问题,但我找不到错误。

【问题讨论】:

【参考方案1】:

500错误的问题(使用CodeIgniter),不同的apache设置,当PHP配置出错时显示500错误。

下面是它如何使用 CodeIgniter 触发 500 错误:

    脚本错误(PHP 配置错误、缺少包等) PHP“致命错误”

请检查你的 apache 错误日志,里面应该有一些有趣的信息。

【讨论】:

谢谢,这帮助我弄清楚服务器的 rewrite_module 没有加载。 这也帮助了我,原来我安装的一个钩子正在使用一个未加载的助手函数!那是我生命中我想要回来的调试时间。 请检查您的 apache 错误日志 +1 我只是在看到这个之前无法找出我的错误是什么 错误日志起到了作用。在 Ubuntu 16.04 中,可以在 /var/log/apache2 找到 apache 日志 谢谢,在centos7这个问题我在/var/log/httpd上找到了原因【参考方案2】:

以防万一其他人偶然发现这个问题,我继承了一个较旧的 CodeIgniter 项目并且在安装它时遇到了很多麻烦。

我浪费了大量时间尝试创建站点的本地安装并尝试了所有方法。最后,解决方案很简单。

问题在于较旧的 CodeIgniter 版本(如 1.7 及更低版本)不适用于 PHP 5.3。解决方案是切换到 PHP 5.2 或更旧的版本。

【讨论】:

【参考方案3】:

您正试图从您的网站 URL 中删除 index.php,对吗?

尝试将$config['uri_protocol'] 设置为REQUEST_URI 而不是AUTO

【讨论】:

非常感谢。经过数小时的搜索,这是我的解决方案的问题【参考方案4】:

对你的 .htaccess 文件试试这个:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %REQUEST_FILENAME !-f
  RewriteCond %REQUEST_FILENAME !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule >

【讨论】:

【参考方案5】:

删除 httpd.conf(apache 配置文件)中的注释:

LoadModule rewrite_module modules/mod_rewrite.so 

【讨论】:

【参考方案6】:

每当我在子目录中运行 CodeIgniter 时,我都会将 RewriteBase 设置为它。尝试将其设置为 /myproj/ 而不是 /

【讨论】:

试过了。但仍然是同样的错误。当我检查我的网络主机上的日志文件时,我看到以下错误。严重性:注意 --> 未定义索引:LOGIN_USERNAME /config/config.php 中的 $config['base_url']$config['uri_protocol'] 设置为什么?另外,LOGIN_USERNAME 是在您的 CI 代码中还是在您的 Web 根目录中? $config['base_url'] = "localhost/myproj"; $config['uri_protocol'] = "AUTO";我从代码中删除了 LOGIN_USERNAME 变量。 尝试清除base_url。此外,在您的/index.php 文件中确保define('ENVIRONMENT', 'development'); 设置为development,并且在您的php.ini 中您的display_errors 设置为On 尝试了一切,但仍然没有运气。我也面临同样的问题。【参考方案7】:

我知道我迟到了,但这会对某人有所帮助。

检查重写引擎是否为enabled。

如果没有,开启重写引擎并重启服务器。

sudo a2enmod rewrite
sudo service apache2 restart

【讨论】:

【参考方案8】:

如果 wampserver 版本 2.5 则将 apache 配置更改为

httpd.conf(apache配置文件): 来自

#LoadModule rewrite_module modules/mod_rewrite.so** 

到,删除#

LoadModule rewrite_module modules/mod_rewrite.so** 

这对我来说很好

【讨论】:

【参考方案9】:

确保你的根index.php文件有正确的权限,它的权限必须是07550644

【讨论】:

【参考方案10】:

晚了,但是,我认为 CodeIgniter 中 500 个内部服务器错误的最佳方法是在 config 文件夹中的 Config.php 文件中启用错误日志功能并设置一个阈值,即 $config[' log_threshold'] = 1,2,3,4,具体取决于您要查看的日志。

【讨论】:

【参考方案11】:

这可能与此线程不再相关,但希望对某人有所帮助。 在过去的一个小时里,我有 500 个错误,因为我的控制器返回了一个不受我(糟糕)服务器上运行的 php 版本支持的数组。看起来微不足道,但具有 codeigniter 错误的特征。

我不得不使用:

class emck_model extends CI_Model 

    public function getTiles()

        return array(...);

    

 

代替

class emck_model extends CI_Model 

    public function getTiles()

        return [...];

    


干杯

【讨论】:

【参考方案12】:

这对我来说很好用

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %REQUEST_FILENAME !-f
  RewriteCond %REQUEST_FILENAME !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule >

【讨论】:

以上是关于CodeIgniter 500 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

我希望 codeigniter 回显 php 错误而不是 500 内部错误

贝宝沙盒帐户创建 500 内部服务器错误

无法在 codeigniter 中提交数据

HTTP 500 内部服务器错误怎么办?

HTTP 500内部服务器错误怎么解决。

HTTP 500内部服务器错误怎么解决。