Codeigniter 3.x与Heroku 500错误

时间:2017-08-22 13:59:38

标签: php codeigniter heroku http-status-code-500

我在Heroku中遇到500错误,尝试启动暂存Codeigniter 3.x项目(第一次)。我似乎无法获得比这更好的日志。

我正在使用heroku-php-apache2 buildpack。 PHP版本是5.6.x

然而,通过调试我可以看到它正确设置根目录为public_html,它正在根目录中加载index.php,它正在加载config.php和database.php,它正在加载路由.PHP。

在我的routes.php中我有: $ route [' default_controller'] =" home";

当我进入主页,根目录时,我收到了500错误,而且它没有像预期那样加载home / index控制器方法。当我引用一个css文件,例如https://staging-app/css/grid.css时,它会加载它,所以我知道目录正在被正确访问。

如果需要,我的.htaccess是

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /

  #Checks to see if the user is attempting to access a valid file,
  #such as an image or css document, if this isn't true it sends the
  #request to index.php
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteCond %{REQUEST_URI} !business-loan-tips.*
  RewriteRule ^(.*)$ index.php?/$1 [L]
 </IfModule>

  <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
  </IfModule> 

尽管如此,无论是否加载都可以加载。

我的composer.json是空的,除了&#39; {}&#39;

我的Procfile只有:

web: vendor/bin/heroku-php-apache2 public_html/

有关我可能出错的地方出现500错误或如何更好地追踪错误的想法?

编辑: 我确实正确地打了数据库。我只是无法控制我的控制器。

3 个答案:

答案 0 :(得分:1)

我遇到这种麻烦的原因是日志记录无法正常工作。事实证明,Heroku的文档已经过时,使用Codeigniter 3.x进行日志记录。从CI 2.x迁移到CI 3.x,他们将Log.php移出/ libraries并移入/ core,因此Heroku docs给你的MY_Log.php文件应该进入/ core,而不是/库。

一旦我修复了日志,错误非常简单......我只需要在config.php中设置:

$config['sess_save_path'] = sys_get_temp_dir();

这在3.x中是新的,我忽略了它。现在需要的时候我把它弄空了。

希望这有助于某人。

答案 1 :(得分:0)

使用此htaccess规则

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine on
  RewriteBase /

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

<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
</IfModule> 

答案 2 :(得分:0)

我认为您可以编辑服务器配置文件。如果服务器是httpd,那么编辑httpd.conf文件&amp;使用以下代码启用htaccess

<Directory /var/www/html/>
    #Options Indexes FollowSymLinks
    AllowOverride All
    #Order allow,deny
    #allow from all
#   Require all granted
</Directory>