# 故障排除

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

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

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

    php spark serve

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

## 我必须在 URL 中包含 index.php

如果类似 `/mypage/find/apple` 的 URL 无法访问，但 `/index.php/mypage/find/apple` 可以正常工作，通常说明 .htaccess 规则（Apache）没有正确配置，或者 Apache 的 httpd.conf 中 `mod_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 错误日志。