質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2943閲覧

PHPにおいてoutput_bufferingの設定を変更したいです

dcf

総合スコア20

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/06/09 07:49

編集2019/06/09 11:03

前提・実現したいこと

現在、掲示板を作成していてfile_get_content()によって別ページのURLを読み込んで表示させているのですが、session_start()やheader()を読み込み元のページで使用しており、エラーメッセージが表示されています。そこで、PHPのoutput_bufferingを変更すれば解決すると分かったのですが、変更方法が分からないのでアドバイスをお願いいたします
また、output_bufferingを変更する以外の解決方法があればお教え願いたいです

発生している問題・エラーメッセージ

session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
Cannot modify header information - headers already sent

該当のソースコード

↓a.php

PHP

1<?php 2 session_start(); 3 if(!$_SESSION[NAME]){ 4 header("location:XXX.php"); 5 } 6?>

↓b.php

PHP

1<?php 2// Include the package 3require_once('Cache/Lite.php'); 4 5// Set a id for this cache 6$id = '123'; 7 8// Set a few options 9$options = array( 10 'cacheDir' => 'Cache/tmp/', 11 'caching' => 'true', 12 'lifeTime' => 600, 13 'automaticSerialization' => 'true' 14); 15 16// Create a Cache_Lite object 17$Cache_Lite = new Cache_Lite($options); 18 19// Test if thereis a valide cache for this id 20$cache_data = $Cache_Lite->get($id); 21$type = gettype($cache_data); 22if ($type === string){ 23 $content = $cache_data; 24}else{ 25 $get_data = file_get_contents("a.php"); 26 $content = $get_data; 27 $Cache_Lite->save($content); 28} 29echo $content; 30?>

b.phpにおいてキャッシュがあればキャッシュを用いて表示、無ければa.phpを読み込んで表示という流れの処理を実現したいです

試したこと

PHP

1ini_set('mbstring.output_buffering', 'On');

上記のコードを実行しましたがphpinfo()で確認すると、output_bufferingの欄はnoValueとなっており、var_dump()で確認するとfalseが返ってきました

補足情報(FW/ツールのバージョンなど)

PHP Version 5.2.4
環境を他人からレンタルしているような形になっているため、Linuxのコマンドなどによる操作はできないという前提でコード内に記述できるような解決方法のご提示をお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちょっとどの部分のエラーについて言ってるか定かで無いのですが
a.phpの場合

<?php session_start(); if(!isset($_SESSION["NAME"])){ header("location:XXX.php"); exit; } ?>

とするとともに、もしutf8 bom付きでファイルを保存しているなら
bomなしで保存し直してください

投稿2019/06/10 01:52

yambejp

総合スコア114892

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問