user.config.phpを編集するとエラーが発生する

インストール後の運用中に生じた質問などはこちら。
管理画面の操作方法でわからないところやTipsなども

user.config.phpを編集するとエラーが発生する

投稿記事by rio327 on 2018年6月11日(月) 16:29

お世話になっております。

先日、サイトのSSL化に伴いSOYCMSの本体もアップデートするべく、
SOYCMS1.8系からsoycms_3.0.1p93_sqliteへのアップデートを行いました。


すると管理画面上部に
コード: 全て選択
Warning: Cannot modify header information - headers already sent by (output started at /home/users/2/*******/web/cms/common/config/user.config.php:1) in /home/users/2/********/web/cms/common/common.inc.php on line 126

というエラーが表示されるようになり、サイト一覧からログインしようとしてもエラーが表示され出来ませんでした。

そこで、「common/config/user.config.php」を同梱されているuser.config.php.sampleをリネームし置き換えてみたところ正常に管理画面が表示されました。

user.config.phpの改修点は、

コード: 全て選択
//テンプレートへのPHPの許可、不許可 (true or false)
//デフォルトは不許可 (false)
define("SOYCMS_ALLOW_PHP_SCRIPT",false);

//PHPモジュールの使用の許可、不許可 (true or false)
//デフォルトは不許可 (false)
define("SOYCMS_ALLOW_PHP_MODULE",false);


これをいずれもtrueにしたという点ですが、どちらか片方だけtrueにしてもエラーが発生します。
また上記2項目をfalseに直したものをfilezillaでアップロードしてもやはりエラーになり、sampleをリネームすると直るという不思議な状況も出ています。
文字コードはUTF-8で問題ないはずですが…

なおこれを有効にするのは、各ページでモバイル端末か否かをPHPで判定してCSSの振り分けを行っているためです。

サーバーはロリポップで、PHPのバージョンは5.6と7.1を試しましたがいずれも改善できませんでした。
関係あるかはわかりませんが、ロリポップのLet'sEncryptのSSL化を行い、管理画面詳細ページからhttpsで始まるURLに変更しています。

現在はサイトのPHPモジュールが埋め込んであるソース部分がテキストとしてサイトに表示されるという状態になってしまっています。

解決策等ございましたら、ご教示よろしくお願いいたします。
rio327
 
記事: 22
登録日時: 2016年2月08日(月) 01:44

Re: user.config.phpを編集するとエラーが発生する

投稿記事by inunosinsi on 2018年6月11日(月) 17:51

差し支えなければで結構ですが、
端末の判定を行っている個所のモジュールのコードをお伝えいただけないでしょうか
SOY CMSの操作に関する質問は下記のページのフォームで受け付けています。
https://saitodev.co/soycms/inquiry

京都でフリーのプログラマをしています。
SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 636
登録日時: 2008年6月12日(木) 20:48

Re: user.config.phpを編集するとエラーが発生する

投稿記事by rio327 on 2018年6月11日(月) 17:59

返信ありがとうございます。
head内に

コード: 全て選択
<?php
function is_mobile () {
$useragents = array('iPhone','iPod','Android.*Mob','Opera.*Mini','blackberry','Windows.*Phone');
$pattern = '/'.implode('|', $useragents).'/i';
return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
}
?>
<?php if (is_mobile()) { ?>
<link rel="stylesheet" type="text/css" href="/css/mobilestyle.css" />
<?php }else{ ?>
<link rel="stylesheet" type="text/css" href="/css/style.css" />
<?php } ?>

<style type="text/css">


と記述しており、

他の個所で

<?php if (is_mobile()) { ?>
<?php } else { ?><!-- block:id="sidenavi" -->
<!-- cms:id="content" -->
<!-- /cms:id="content" -->
<!-- /block:id="sidenavi" -->
<?php } ?>

このようにしてサイドバーを出すか否かの判定をしています。
rio327
 
記事: 22
登録日時: 2016年2月08日(月) 01:44

Re: user.config.phpを編集するとエラーが発生する

投稿記事by inunosinsi on 2018年6月12日(火) 16:21

モジュールではなく、PHP許可モードなのですね。
ブロックを指定していて端末によってはブロックが表示されないということが有りかどうかわかりませんが、
今まで表示されていたということであれば有りなのでしょう。

このコードでは判断が付きませんでした。
お力になれず申し訳ございません。
SOY CMSの操作に関する質問は下記のページのフォームで受け付けています。
https://saitodev.co/soycms/inquiry

京都でフリーのプログラマをしています。
SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 636
登録日時: 2008年6月12日(木) 20:48

Re: user.config.phpを編集するとエラーが発生する

投稿記事by rio327 on 2018年6月12日(火) 16:53

検証ありがとうございます。
user.php.configの該当箇所をtrueにすればサイトそのものは正常に表示されますしこれまでは問題ありませんでしたので、恐らく有りなのでしょう。

そもそもの疑問なのですが公開側のソース内容が原因で管理画面にエラーが表示されるようなことまで影響を及ぼすのでしょうか?
もしそういうことであればソースの改修も視野に入れますが。
rio327
 
記事: 22
登録日時: 2016年2月08日(月) 01:44

Re: user.config.phpを編集するとエラーが発生する

投稿記事by inunosinsi on 2018年6月13日(水) 04:54

そもそもの疑問なのですが公開側のソース内容が原因で管理画面にエラーが表示されるようなことまで影響を及ぼすのでしょうか?

こちらは有りえません。
管理画面側のほとんどのページで公開側のテンプレートのHTMLを読み込む個所はありません。

この質問から思ったのですが、user.config.php自体が古いのかも知れません。
user.config.phpはいくつか手を加えていて、新たな設定項目が増えています。

その設定の項目がないことでエラーになっている可能性は有り得そうです。

現在のバージョンに同梱されているuser.config.php.sampleの方をリネームして使用してみてください。
SOY CMSの操作に関する質問は下記のページのフォームで受け付けています。
https://saitodev.co/soycms/inquiry

京都でフリーのプログラマをしています。
SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 636
登録日時: 2008年6月12日(木) 20:48

Re: user.config.phpを編集するとエラーが発生する

投稿記事by rio327 on 2018年6月13日(水) 09:46

返信ありがとうございます。

現在のバージョンに同梱されているuser.config.php.sampleの方をリネームして使用してみてください。


これは最初にエラーが表示されてからエラーコードを見て思い立ち、3.0.1p93_sqliteに同梱されているものを使用しています。

もう一点気になるのは「/common/common.inc.php on line 126」のエラーですが、これは

コード: 全て選択
header("Content-Type: text/html; charset=utf-8");
//header("Content-Language: ".SOYCMS_LANGUAGE);

//fatal error
register_shutdown_function("soycms_shutdown");
function soycms_shutdown(){
   if(function_exists("error_get_last")){// PHP 5.2.0 or later
      $error = error_get_last();
      if(is_array($error) && isset($error["type"])){
         if($error["type"] == E_ERROR || $error["type"] == E_RECOVERABLE_ERROR){
            $exception = new ErrorException($error["message"], 100, $error["type"], $error["file"], $error["line"]);
            include_once(dirname(__FILE__) . "/error/admin.php");
            exit;


この部分が発しているエラーだと思いますが、私はPHPのソースはよくわかりませんが、PHPのバージョンが5.2.0以降は以下のエラーを表示する…ということなのでしょうか?
rio327
 
記事: 22
登録日時: 2016年2月08日(月) 01:44

Re: user.config.phpを編集するとエラーが発生する

投稿記事by inunosinsi on 2018年6月13日(水) 11:48

該当する個所よりも前にheaderを実行したり、出力周りに処理があったりしたらエラーになるものだったはずですが、
テンプレートに記載されているものだと判断が付きません。

あとはFTPでファイルをサーバに送信した際にエラーが起こったのでしょうか?
FTPクライアントによってはエラーが頻繁に発生するものがありますので、
普段はFileZillaを使用するように伝えています。
FileZilla - The free FTP solution
SOY CMSの操作に関する質問は下記のページのフォームで受け付けています。
https://saitodev.co/soycms/inquiry

京都でフリーのプログラマをしています。
SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 636
登録日時: 2008年6月12日(木) 20:48

Re: user.config.phpを編集するとエラーが発生する

投稿記事by rio327 on 2018年6月13日(水) 16:00

ありがとうございます。

FTPクライアントはFileZillaを用いています。試しにFFFTPでやってみたり、何度も全部のディレクトリを再アップロードとかもしているのですが効果はありません。

ちょっと前回の表現に分かりにくい部分があったかもしれないので捕捉しますと、

コード: 全て選択
//
define("SOYCMS_ALLOW_PHP_SCRIPT",true);
define("SOYCMS_ALLOW_PHP_MODULE",true);


この状態にすると公開サイト側は正常に動作します。
前述したようにPCではサイドバーが表示され、スマホではされません。
実際にはヘッダーの文字サイズやフッターの表示方法も変えていますが、いずれも問題は起こりません。

ただ、ログイン後の管理画面に上部にエラーが出ます。
なお、管理画面から画面遷移後は以下のようなエラーが表示されます。

コード: 全て選択
Warning: Cannot modify header information - headers already sent by (output started at /home/users/2/**********/web/cms/common/config/user.config.php:1) in /home/users/2/**********/web/cms/common/common.inc.php on line 126

Warning: Cannot modify header information - headers already sent by (output started at /home/users/2/**********/web/cms/common/config/user.config.php:1) in /home/users/2/**********/web/cms/common/lib/soy2_build.php on line 319


ちなみに別のバージョン、例えばsoycms_1.8.9_sqliteなどではエラーは表示されませんが、画面を遷移すると真っ白になります。

上記コードのtrue部分をfaluseにしますと、管理画面でのエラーはなくなりますが、テンプレートへのPHPが不許可になるため、当然公開側ページではPHPソースがテキストとして表示されてしまう、という状態です。

素人考えですがロリポップのPHPの設定との相性がある気がしなくもありません。
rio327
 
記事: 22
登録日時: 2016年2月08日(月) 01:44

Re: user.config.phpを編集するとエラーが発生する

投稿記事by rio327 on 2018年6月14日(木) 16:35

お世話になります。

何とか解決したようです。

user.config.php.sampleをリネームすればエラーが出ないのに、手動でfalseにするとエラーになるのはなぜなのか?という点に引っかかっていましたが、

https://php1st.com/69/

こちらのサイトを参考に、

編集した後のuser.config.phpを「BOM付きのUTF-8で保存」しないようにしてアップロードしたところ、エラーが消えました。
文字コードはあっていたもののBOM付きだったためにエラーが出ていたようです。

大変お騒がせ致しました。
根気良く付き合ってくださり誠にありがとうございました。
また何かあったらよろしくお願いいたします。
SOYCMS大好きです。
rio327
 
記事: 22
登録日時: 2016年2月08日(月) 01:44


Return to 運用・操作方法

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[3人]

cron