故障排除

以下是一些常见的安装问题,以及对应的解决方法。

如何确认安装是否正常工作?

在项目根目录的命令行中执行:

php spark serve

然后在浏览器中访问 http://localhost:8080,应该会显示默认的欢迎页面:

CodeIgniter4 Welcome

我必须在 URL 中包含 index.php

如果类似 /mypage/find/apple 的 URL 无法访问,但 /index.php/mypage/find/apple 可以正常工作,通常说明 .htaccess 规则(Apache)没有正确配置,或者 Apache 的 httpd.confmod_rewrite 扩展被注释掉了。 请参阅 移除 index.php 文件

只会加载默认页面

如果无论在 URL 中输入什么内容,都只会加载默认页面,可能是你的服务器不支持用于生成搜索引擎友好 URL 所需的 REQUEST_URI 变量。

第一步,打开 app/Config/App.php 文件,查找 URI Protocol 相关设置。文件中会建议你尝试几个备用配置。 如果在尝试之后仍然无法工作,就需要强制 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?';

    // ...
}

No input file specified

如果看到 “No input file specified” 错误,请尝试按如下方式修改重写规则(在 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 错误日志

如果你在开发过程中遇到该页面,应将环境切换为 “development”(在 .env 中设置)。 更多信息请参阅 设置开发模式。 完成后重新加载页面,即可看到错误信息和回溯信息。

CodeIgniter 错误日志

请参阅 CodeIgniter 错误日志