私はルートファイルをデータベースから動的に更新することに取り組んでいました。残念ながら、私の狡猾な計画はいくつかの問題を引き起こしました。
構成ファイルの 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);
}