故障排除
以下是一些常见的安装问题以及建议的解决方法。
如何知道我的安装是否正常工作?
从命令行,在您的项目根目录
php spark serve
http://localhost:8080
在您的浏览器中应该显示默认的欢迎页面
我必须在 URL 中包含 index.php
如果像 /mypage/find/apple
这样的 URL 无法访问,但类似的 URL /index.php/mypage/find/apple
可以访问,这可能意味着你的 .htaccess 规则(针对 Apache)设置不正确,或者 Apache 的 httpd.conf 中的 mod_rewrite
扩展被注释掉了。请查看 移除 index.php 文件。
只加载默认页面
如果你发现无论你在 URL 中输入什么,都只能加载默认页面,可能是你的服务器不支持提供搜索引擎友好 URL 所需的 REQUEST_URI 变量。首先,打开你的 app/Config/App.php 文件,并查找 URI 协议信息。它会建议你尝试几个备用设置。如果尝试后仍然无法解决问题,你需要强制 CodeIgniter 在你的 URL 中添加问号 (?
)。为此,打开你的 app/Config/App.php 文件,并将以下内容
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class App extends BaseConfig
{
// ...
public string $indexPage = 'index.php';
// ...
}
更改为
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class App extends BaseConfig
{
// ...
public string $indexPage = 'index.php?';
// ...
}
未指定输入文件
如果你看到“未指定输入文件”,请尝试更改重写规则,如下所示(在 index.php
后添加 ?
)
RewriteRule ^([\s\S]*)$ index.php?/$1 [L,NC,QSA]
我的应用程序在本地运行良好,但在生产服务器上无法运行
确保文件夹和文件名的大小写与代码匹配。
许多开发人员在 Windows 或 macOS 上的区分大小写文件系统上进行开发。但是,大多数服务器环境使用区分大小写文件系统。
例如,当你拥有 app/Controllers/Product.php 时,你必须使用 Product
作为简短类名,而不是 product
。
如果文件名大小写不正确,服务器将找不到该文件。
教程中到处都是 404 错误 :(
你不能使用 PHP 的内置 Web 服务器来遵循教程。它不会处理正确路由请求所需的 .htaccess 文件。
解决方案:使用 Apache 来提供您的网站服务,或者使用 CodeIgniter 内置的等效命令,从您的项目根目录运行 php spark serve
。
为什么会出现无用的“Whoops!”页面?
您发现您的应用程序显示了一个包含“Whoops!”和文本行“We seem to have hit a snag. Please try again later…”的页面。
这表示您处于生产模式,并且遇到了无法恢复的错误,为了更好的安全性,我们不想将其显示给 Web 应用程序的查看者。
您可以在日志文件中查看错误。请参阅下面的 CodeIgniter 错误日志。
如果您在开发过程中遇到了此页面,则应将您的环境更改为“开发”模式(在 .env 文件中)。有关更多详细信息,请参阅 设置开发模式。之后,重新加载页面。您将看到错误和回溯信息。
CodeIgniter 错误日志
CodeIgniter 会根据 app/Config/Logger.php 中的设置记录错误消息。
您可以调整错误阈值以查看更多或更少的错误消息。有关详细信息,请参阅 日志记录。
默认配置将每日日志文件存储在 writable/logs 目录中。如果事情没有按预期进行,建议您检查这些日志文件!