我在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错误或如何更好地追踪错误的想法?
编辑: 我确实正确地打了数据库。我只是无法控制我的控制器。
答案 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>