故障排除

以下是一些常见的安装问题以及建议的解决方法。

如何知道我的安装是否正常工作?

从命令行,在您的项目根目录

php spark serve

http://localhost:8080 在您的浏览器中应该显示默认的欢迎页面

CodeIgniter4 Welcome

我必须在 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 目录中。如果事情没有按预期进行,建议您检查这些日志文件!