0

私はルートファイルをデータベースから動的に更新することに取り組んでいました。残念ながら、私の狡猾な計画はいくつかの問題を引き起こしました。

構成ファイルの routes.php の最後に次の行を追加しました。

include_once APPPATH . "cache/routes.php";

キャッシュ フォルダー内の routes.php ファイルが自動的に更新されます。現在、次のようになっています。

$route["index"] = "pages/index/1";

$route["私たちについて/subpagetest"] = "pages/index/4"; $route["私たちについて"] = "pages/index/3";

問題は、すべてのページの上部に次のエラーが表示されることです。

PHP エラーが発生しました重大度: 警告

メッセージ: ヘッダー情報を変更できません - ヘッダーは既に送信されています (出力は /home/jshultz/public_html/application/cache/routes.php:3 で開始)

ファイル名: core/Security.php

ライン番号: 188

PHP エラーが発生しました重大度: 警告

メッセージ: ヘッダー情報を変更できません - ヘッダーは既に送信されています (出力は /home/jshultz/public_html/application/cache/routes.php:3 で開始)

ファイル名: libraries/Session.php

ライン番号: 672

たぶんパーミッションエラーだと思ったのですが、わかりませんか? ファイルへのアクセス許可を変更しようとしましたが、何も変更されませんでした。何か案は?

編集:

では、application/cache フォルダーの routes.php に開口部が必要です。

これは、キャッシュ フォルダーに routes.php ファイルを作成する正しいコードです。

public function save_routes()
        {

            // this simply returns all the pages from my database
            $routes = $this->Pages_model->get_all($this->siteid);

            // write out the PHP array to the file with help from the file helper
            if ( !empty( $routes ) )
            {
                // for every page in the database, get the route using the recursive function - _get_route()
                foreach( $routes->result_array() as $route )
                {
                    $data[] = '$route["' . $this->_get_route($route['pageid']) . '"] = "' . "pages/index/{$route['pageid']}" . '";';
                }

                $output = "<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');\n";

                $output .= implode("\n", $data);

                $this->load->helper('file');
                write_file(APPPATH . "cache/routes.php", $output);
            }
4

1 に答える 1

1

<?phpおそらく、ファイルの先頭に追加してByte Order Markから削除する必要があります

/home/jshultz/public_html/application/cache/routes.php

そのファイルでPHP 終了タグ?>を使用しないでください。?>を使用すると、インタープリターはタグの後の文字をテキスト出力と見なすようになります。

于 2012-07-29T16:15:44.653 に答える