質問 > フロント機能 > xamppでインストールする時にParse エラーが出ます |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
NADEMO |
投稿日時: 2009/10/8 16:28
対応状況: −−−
|
常連 登録日: 2009/10/5 居住地: 品川 投稿: 50 |
xamppでインストールする時にParse エラーが出ます 現在、Xamppを使いながらEC-cube2.4.1をインストールしようと思っています。
全てのダウンロードを終え、http://localhost/eccube/html/installへアクセスしたところ、 「Parse error: syntax error, unexpected ';', expecting T_FUNCTION in C:\xampp\htdocs\eccube\data\class\util\SC_Utils.php on line 2018」と出ました。 「SC_Utils.php(下記参照)」を確認しても、間違いがあるとは思えません。どうしたらよいでしょうか。 <?php /* * This file is part of EC-CUBE * * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. * * http://www.lockon.co.jp/ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** * 各種ユーティリティクラス. * * 主に static 参照するユーティリティ系の関数群 * * :XXX: 内部でインスタンスを生成している関数は, Helper クラスへ移動するべき... * * @package Util * @author LOCKON CO.,LTD. * @version $Id:SC_Utils.php 15532 2007-08-31 14:39:46Z nanasess $ */ class SC_Utils { /** * サイト管理情報から値を取得する。 * データが存在する場合、必ず1以上の数値が設定されている。 * 0を返した場合は、呼び出し元で対応すること。 * * @param $control_id 管理ID * @param $dsn DataSource * @return $control_flg フラグ */ function sfGetSiteControlFlg($control_id, $dsn = "") { // データソース if($dsn == "") { if(defined('DEFAULT_DSN')) { $dsn = DEFAULT_DSN; } else { return; } } // クエリ生成 $target_column = "control_flg"; $table_name = "dtb_site_control"; $where = "control_id = ?"; $arrval = array($control_id); $control_flg = 0; // クエリ発行 $objQuery = new SC_Query($dsn, true, true); $arrSiteControl = $objQuery->select($target_column, $table_name, $where, $arrval); // データが存在すればフラグを取得する if (count($arrSiteControl) > 0) { $control_flg = $arrSiteControl[0]["control_flg"]; } return $control_flg; } // インストール初期処理 function sfInitInstall() { // インストールが完了していない時 if(!defined('ECCUBE_INSTALL')) { if(!ereg('/install/', $_SERVER['PHP_SELF'])) { // インストールページに遷移させる header('Location: ./install/'); exit; } else { $path = HTML_PATH . "install/index.php"; if(file_exists($path)) { SC_Utils::sfErrorHeader(">> /install/index.phpは、インストール完了後にファイルを削除してください。"); } } } // 装飾付きエラーメッセージの表示 function sfErrorHeader($mess, $print = false) { global $GLOBAL_ERR; $GLOBAL_ERR.="<div style='color: #F00; font-weight: bold; font-size: 12px;" . "background-color: #FEB; text-align: center; padding: 5px;'>"; $GLOBAL_ERR.= $mess; $GLOBAL_ERR.= "</div>"; if($print) { print($GLOBAL_ERR); } } /* エラーページの表示 */ function sfDispError($type) { require_once(CLASS_EX_PATH . "page_extends/error/LC_Page_Error_DispError_Ex.php"); $objPage = new LC_Page_Error_DispError_Ex(); register_shutdown_function(array($objPage, "destroy")); $objPage->init(); $objPage->type = $type; $objPage->process(); exit; } /* サイトエラーページの表示 */ function sfDispSiteError($type, $objSiteSess = "", $return_top = false, $err_msg = "", $is_mobile = false) { global $objCampaignSess; require_once(CLASS_EX_PATH . "page_extends/error/LC_Page_Error_Ex.php"); $objPage = new LC_Page_Error_Ex(); register_shutdown_function(array($objPage, "destroy")); $objPage->init(); $objPage->type = $type; $objPage->objSiteSess = $objSiteSess; $objPage->return_top = $return_top; $objPage->err_msg = $err_msg; $objPage->is_mobile = (defined('MOBILE_SITE')) ? true : false; $objPage->process(); exit; } /* 認証の可否判定 */ function sfIsSuccess($objSess, $disp_error = true) { $ret = $objSess->IsSuccess(); if($ret != SUCCESS) { if($disp_error) { // エラーページの表示 SC_Utils::sfDispError($ret); } return false; } // リファラーチェック(CSRFの暫定的な対策) // 「リファラ無」 の場合はスルー // 「リファラ有」 かつ 「管理画面からの遷移でない」 場合にエラー画面を表示する if ( empty($_SERVER['HTTP_REFERER']) ) { // TODO 警告表示させる? // sfErrorHeader('>> referrerが無効になっています。'); } else { $domain = SC_Utils::sfIsHTTPS() ? SSL_URL : SITE_URL; $pattern = sprintf('|^%s.*|', $domain); $referer = $_SERVER['HTTP_REFERER']; // 管理画面から以外の遷移の場合はエラー画面を表示 if (!preg_match($pattern, $referer)) { if ($disp_error) SC_Utils::sfDispError(INVALID_MOVE_ERRORR); return false; } } return true; } /** * 文字列をアスタリスクへ変換する. * * @param string $passlen 変換する文字列 * @return string アスタリスクへ変換した文字列 */ function lfPassLen($passlen){ $ret = ""; for ($i=0;$i<$passlen;true){ $ret.="*"; $i++; } return $ret; } /** * HTTPSかどうかを判定 * * @return bool */ function sfIsHTTPS () { // HTTPS時には$_SERVER['HTTPS']には空でない値が入る // $_SERVER['HTTPS'] != 'off' はIIS用 if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { return true; } else { return false; } } /** * 正規の遷移がされているかを判定 * 前画面でuniqidを埋め込んでおく必要がある * @param obj SC_Session, SC_SiteSession * @return bool */ function sfIsValidTransition($objSess) { // 前画面からPOSTされるuniqidが正しいものかどうかをチェック $uniqid = $objSess->getUniqId(); if ( !empty($_POST['uniqid']) && ($_POST['uniqid'] === $uniqid) ) { return true; } else { return false; } } /* 前のページで正しく登録が行われたか判定 */ function sfIsPrePage(&$objSiteSess, $is_mobile = false) { $ret = $objSiteSess->isPrePage(); if($ret != true) { // エラーページの表示 SC_Utils::sfDispSiteError(PAGE_ERROR, $objSiteSess, false, "", $is_mobile); } } function sfCheckNormalAccess(&$objSiteSess, &$objCartSess) { // ユーザユニークIDの取得 $uniqid = $objSiteSess->getUniqId(); // 購入ボタンを押した時のカート内容がコピーされていない場合のみコピーする。 $objCartSess->saveCurrentCart($uniqid); // POSTのユニークIDとセッションのユニークIDを比較(ユニークIDがPOSTされていない場合はスルー) $ret = $objSiteSess->checkUniqId(); if($ret != true) { // エラーページの表示 SC_Utils_Ex::sfDispSiteError(CANCEL_PURCHASE, $objSiteSess); } // カート内が空でないか || 購入ボタンを押してから変化がないか $quantity = $objCartSess->getTotalQuantity(); $ret = $objCartSess->checkChangeCart(); if($ret == true || !($quantity > 0)) { // カート情報表示に強制移動する // FIXME false を返して, Page クラスで遷移させるべき... if (defined("MOBILE_SITE")) { header("Location: ". MOBILE_URL_CART_TOP . "?" . session_name() . "=" . session_id()); } else { header("Location: ".URL_CART_TOP); } exit; } return $uniqid; } /* DB用日付文字列取得 */ function sfGetTimestamp($year, $month, $day, $last = false) { if($year != "" && $month != "" && $day != "") { if($last) { $time = "23:59:59"; } else { $time = "00:00:00"; } $date = $year."-".$month."-".$day." ".$time; } else { $date = ""; } return $date; } // INT型の数値チェック function sfIsInt($value) { if($value != "" && strlen($value) <= INT_LEN && is_numeric($value)) { return true; } return false; } function sfCSVDownload($data, $prefix = ""){ if($prefix == "") { $dir_name = SC_Utils::sfUpDirName(); $file_name = $dir_name . date("ymdHis") .".csv"; } else { $file_name = $prefix . date("ymdHis") .".csv"; } /* HTTPヘッダの出力 */ Header("Content-disposition: attachment; filename=${file_name}"); Header("Content-type: application/octet-stream; name=${file_name}"); Header("Cache-Control: "); Header("Pragma: "); if (mb_internal_encoding() == CHAR_CODE){ $data = mb_convert_encoding($data,'SJIS-Win',CHAR_CODE); } /* データを出力 */ echo $data; } /* 1階層上のディレクトリ名を取得する */ function sfUpDirName() { $path = $_SERVER['PHP_SELF']; $arrVal = split("/", $path); $cnt = count($arrVal); return $arrVal[($cnt - 2)]; } /** * 現在のサイトを更新(ただしポストは行わない) * * @deprecated LC_Page::reload() を使用して下さい. */ function sfReload($get = "") { if ($_SERVER["SERVER_PORT"] == "443" ){ $url = ereg_replace(URL_DIR . "$", "", SSL_URL); } else { $url = ereg_replace(URL_DIR . "$", "", SITE_URL); } if($get != "") { header("Location: ". $url . $_SERVER['PHP_SELF'] . "?" . $get); } else { header("Location: ". $url . $_SERVER['PHP_SELF']); } exit; } // チェックボックスの値をマージ function sfMergeCBValue($keyname, $max) { $conv = ""; $cnt = 1; for($cnt = 1; $cnt <= $max; $cnt++) { if ($_POST[$keyname . $cnt] == "1") { $conv.= "1"; } else { $conv.= "0"; } } return $conv; } // html_checkboxesの値をマージして2進数形式に変更する。 function sfMergeCheckBoxes($array, $max) { $ret = ""; if(is_array($array)) { foreach($array as $val) { $arrTmp[$val] = "1"; } } for($i = 1; $i <= $max; $i++) { if(isset($arrTmp[$i]) && $arrTmp[$i] == "1") { $ret.= "1"; } else { $ret.= "0"; } } return $ret; } // html_checkboxesの値をマージして「-」でつなげる。 function sfMergeParamCheckBoxes($array) { $ret = ''; if(is_array($array)) { foreach($array as $val) { if($ret != "") { $ret.= "-$val"; } else { $ret = $val; } } } else { $ret = $array; } return $ret; } // html_checkboxesの値をマージしてSQL検索用に変更する。 function sfSearchCheckBoxes($array) { $max = 0; $ret = ""; foreach($array as $val) { $arrTmp[$val] = "1"; if($val > $max) { $max = $val; } } for($i = 1; $i <= $max; $i++) { if($arrTmp[$i] == "1") { $ret.= "1"; } else { $ret.= "_"; } } if($ret != "") { $ret.= "%"; } return $ret; } // 2進数形式の値をhtml_checkboxes対応の値に切り替える function sfSplitCheckBoxes($val) { $arrRet = array(); $len = strlen($val); for($i = 0; $i < $len; $i++) { if(substr($val, $i, 1) == "1") { $arrRet[] = ($i + 1); } } return $arrRet; } // チェックボックスの値をマージ function sfMergeCBSearchValue($keyname, $max) { $conv = ""; $cnt = 1; for($cnt = 1; $cnt <= $max; $cnt++) { if ($_POST[$keyname . $cnt] == "1") { $conv.= "1"; } else { $conv.= "_"; } } return $conv; } <省略> /* デバッグ用 --------------------------------------------------------------------------------*/ function sfPrintR($obj) { print("<div style='font-size: 12px;color: #00FF00;'>\n"); print("<strong>**デバッグ中**</strong><br />\n"); print("<pre>\n"); //print_r($obj); var_dump($obj); print("</pre>\n"); print("<strong>**デバッグ中**</strong></div>\n"); } } ?>
|
seasoft |
投稿日時: 2009/10/8 18:15
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: xamppでインストールする時にParse エラーが出ます .htaccess は正しく適用されていますか?
|
NADEMO |
投稿日時: 2009/10/9 9:01
対応状況: −−−
|
常連 登録日: 2009/10/5 居住地: 品川 投稿: 50 |
Re: xamppでインストールする時にParse エラーが出ます ご返信有難う御座います。
.htaccessは全く触っていません。 「#基本はphp_ini.incで設定するが、ini_setで反映されないものはここで設定する php_value mbstring.language Japanese php_value output_handler mb_output_handler php_flag mbstring.encoding_translation 1 php_flag magic_quotes_gpc 0 #php_flag session.use_cookies 0 #php_flag session.use_trans_sid 1 # INI_ALL なのにもかかわらず, ini_set で指定しても反映されない環境がある... php_value mbstring.internal_encoding UTF-8 # デフォルトテンプレートの状態で 2M近くになるため php_value upload_max_filesize 5M」 上記の状態です。 いかがでしょうか。 宜しくお願いします。
|
seasoft |
投稿日時: 2009/10/9 9:42
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: xamppでインストールする時にParse エラーが出ます 触らずに適応される環境ですか?
確信が無いならば、phpinfo() などで、「適応されているか」を確認するのが良い気がします。
|
NADEMO |
投稿日時: 2009/10/9 10:33
対応状況: −−−
|
常連 登録日: 2009/10/5 居住地: 品川 投稿: 50 |
Re: xamppでインストールする時にParse エラーが出ます 引用:
ご返信有難う御座います。 http://localhost/ファイル名/ でアクセスしてみました。 なにぶん初心者なもので、どちらを見れば適応できているのかがわかりません。 すみませんがアドバイスをいただけませんでしょうか。
|
seasoft |
投稿日時: 2009/10/9 10:42
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: xamppでインストールする時にParse エラーが出ます まずは、phpinfo() の使い方が掲載されている、PHP の解説書を読まれると良いかもしれません。
マニュアルは http://www.php.net/manual/ja/function.phpinfo.php で見れますが、少し難易度が高いかも・・・
|
NADEMO |
投稿日時: 2009/10/9 11:38
対応状況: −−−
|
常連 登録日: 2009/10/5 居住地: 品川 投稿: 50 |
Re: xamppでインストールする時にParse エラーが出ます マニュアルを見てみましたが、やはり難しいです。
.htaccessが適応していない場合、parse errorが出てしまうのでしょうか。 そうすると、やはり直すべきですよね。 参りました・・・。 今週中にインストールし、連休中に作業を進めたかったので。 知識不足でご迷惑をお掛けします。
|
ramrun |
投稿日時: 2009/10/9 12:13
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: xamppでインストールする時にParse エラーが出ます xamppでの確認はよくするのですが、どうやったらそういうエラーになるのか興味ありますね。
引用: Parse error: syntax error, unexpected ';', expecting T_FUNCTION in C:\xampp\htdocs\eccube\data\class\util\SC_Utils.php on line 2018 はSC_Utils.phpのファイルの最後みたいですけど、SC_Utils.phpというか、2.4.1のファイルは解凍しただけの一切手を加えていないものですか? 一応、.htaccessを無効にしてみたり、あえてeuc-jpなどでやってみてもParse errorにはならないようです。 xamppのバージョンや、利用したパッケージtar.gzかzipかとか、解凍に使ったソフトとか、そのあたりがわかればこちらでも確認できるかもしれません。 |
NADEMO |
投稿日時: 2009/10/9 13:01
対応状況: −−−
|
常連 登録日: 2009/10/5 居住地: 品川 投稿: 50 |
Re: xamppでインストールする時にParse エラーが出ます ご返信ありがとうございます。
eccube2.4.1zipをダウンロードし、解凍した後で C:\xampp\htdocs に貼り付け、ファイル名を「eccube」としました。 最初はそのまま http://localhost/eccube/html にアクセスしました。 そのときは、10個ぐらいエラーが出ました。 SC_Utils以外は C:\xampp\htdocs\eccube\data\module の中のエラーで、 @$obj = &new $classname; の&を外すことで回避できました。 最初に出ていたSC_Utilsのエラーは 80行目で、参考サイトを探して // インストール初期処理 function sfInitInstall() { // インストールが完了していない時 if(!defined('ECCUBE_INSTALL')) { if(!ereg('/install/', $_SERVER['PHP_SELF'])) { // インストールページに遷移させる header('Location: ./install/'); exit; } } else { $path = HTML_PATH . "install/index.php"; if(file_exists($path)) { SC_Utils::sfErrorHeader(">> /install/index.phpは、インストール完了後にファイルを削除してください。"); } } } で回避できました。 しかし、この変更をかけたところ、先ほどのエラーが出てきたのです。 このエラーが指しているのは「?>」の部分で、これは文法的に間違っていないし、お手上げ状態です。 よろしくお願いします。
|
seasoft |
投稿日時: 2009/10/9 13:05
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: xamppでインストールする時にParse エラーが出ます 無関係かもしれませんが、ファイル末尾の「?>」は不要ですので、行削除を試すと何か変化があるかもしれません。(エラー行が1つ前になるだけかも…)
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |