Re: Re: Re: Fatal error: Class 'FileHelper' not found in...について

2013年8月30日 at 16:03

度々申し訳ございません。
お伺いのhelpers/file.phpとは、concrete5.6.1.2.ja/helpers/file.phpのことでしたでしょうか。

上記のものですと、内容は下記のようになっておりました。

度々お伺いし、申し訳ありませんが、どうかよろしくお願い申し上げます。

(?php
/**
* @package Helpers
* @category Concrete
* @author Andrew Embler <andrew@concrete5.org>
* @copyright Copyright (c) 2003-2008 Concrete5. (http://www.concrete5.org)
* @license http://www.concrete5.org/license/ MIT License
*/

/**
* Functions useful for working with files and directories.
* @package Helpers
* @category Concrete
* @author Andrew Embler <andrew@concrete5.org>
* @copyright Copyright (c) 2003-2008 Concrete5. (http://www.concrete5.org)
* @license http://www.concrete5.org/license/ MIT License
*/

defined('C5_EXECUTE') or die("Access Denied.");
Loader::element('func_mb_filename');

class SiteFileHelper extends FileHelper {

/**
* @access private
*/
protected $ignoreFiles = array('__MACOSX', DIRNAME_CONTROLLERS);

/**
* Returns the contents of a directory in an array.
* @param string $directory
* @return array
*/
public function getDirectoryContents($dir, $ignoreFilesArray = array()) {
$this->ignoreFiles = array_merge($this->ignoreFiles, $ignoreFilesArray);
$aDir = array();
if (is_dir($dir)) {
$handle = opendir($dir);
while(($file = readdir($handle)) !== false) {
if (substr($file, 0, 1) != '.' && (!in_array($file, $this->ignoreFiles))) {
$aDir[] = $file;
}
}
}
return $aDir;
}

/**
* Removes the extension of a filename, uncamelcases it.
* @param string $filename
* @return string
*/
public function unfilename($filename) {
// removes the extension and makes it look nice
$txt = Loader::helper('text');
return substr($txt->unhandle($filename), 0, strrpos($filename, '.'));
}

/**
* Recursively copies all items in the source directory to the target directory
* @param string $source
* @param string $target
*/
public function copyAll($source, $target, $mode = 0777) {
if (is_dir($source)) {
@mkdir($target, $mode);
@chmod($target, $mode);

$d = dir($source);
while (FALSE !== ($entry = $d->read())) {
if ( $entry == '.' || $entry == '..' || substr($entry, 0, 1) == '.') {
continue;
}

$Entry = $source . '/' . $entry;
if (is_dir($Entry)) {
$this->copyAll($Entry, $target . '/' . $entry, $mode);
continue;
}

copy($Entry, $target . '/' . $entry);
chmod($target . '/' . $entry, $mode);
}

$d->close();
} else {
copy($source, $target);
chmod($target, $mode);
}
}

/**
* Takes a path to a file and sends it to the browser, streaming it, and closing the HTTP connection afterwards. Basically a force download method
*/
public function forceDownload($file, $download_filename = false) {
$handle = @fopen($file, 'rb');
if ($handle === false) {
// Not Found
header('HTTP/1.1 404 Not Found');
return false;
}

header('Content-type: application/octet-stream');
//$h = Loader::helper('mime');
//$mimeType = $h->mimeFromExtension($this->getExtension($file));
//header('Content-type: ' . $mimeType);

if($download_filename){
$filename = $download_filename;
}else{
$filename = basename($file);
}
$ua = $_SERVER['HTTP_USER_AGENT'];
if (strstr($ua, 'MSIE') && !strstr($ua, 'Opera')) {
$filename = mb_convert_encoding($filename, "SJIS", APP_CHARSET);
}
header("Content-Disposition: attachment; filename=\"$filename\"");
header('Content-Length: ' . filesize($file));
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Transfer-Encoding: binary");

$buffer = '';
$chunk = 1024*1024;

while (!feof($handle)) {
$buffer = fread($handle, $chunk);
print $buffer;
}

fclose($handle);
exit;
}

/**
* Returns the full path to the temporary directory
*/
public function getTemporaryDirectory() {
if (!is_dir(DIR_TMP)) {
mkdir(DIR_TMP, 0777);
touch(DIR_TMP . '/index.html');
}
return DIR_TMP;

}



/**
* Adds content to a new line in a file. If a file is not there it will be created
* @param string $filename
* @param string $content
*/
public function append($filename, $content) {
file_put_contents($filename, $content, FILE_APPEND);
}


/**
* Just a consistency wrapper for file_get_contents
* Should use curl if it exists and fopen isn't allowed (thanks Remo)
* @param $filename
*/
public function getContents($file, $timeout = 5) {
$url = @parse_url($file);
if (isset($url['scheme']) && isset($url['host'])) {
if (ini_get('allow_url_fopen')) {
$ctx = stream_context_create(array(
'http' => array( 'timeout' => $timeout )
));
if ($contents = @file_get_contents($file, 0, $ctx)) {
return $contents;
}
}

if (function_exists('curl_init')) {
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $file);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($curl_handle);
$http_code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
if ($http_code == 404) {
return false;
}

return $contents;
}
} else {
if ($contents = @file_get_contents($file)) {
return $contents;
}
}

return false;
}

/**
* Removes contents of the file
* @param $filename
*/
public function clear($file) {
file_put_contents($file, '');
}


/**
* Cleans up a filename and returns the cleaned up version
*/
public function sanitize($file) {
//return preg_replace(array("/[^0-9A-Za-z-.]/","/[\s]/"),"", $file);
//$file = preg_replace("/[^0-9A-Z_a-z-.\s]/","", $file);
$file = preg_replace("/[<>&#]/","", $file);
return trim($file);
}

/**
* Returns the extension for a file name
* @param $filename
*/
public function getExtension($filename) {
$extension = end(explode(".",$filename));
return $extension;
}

/**
* Takes a path and replaces the files extension in that path with the specified extension
*/
public function replaceExtension($filename, $extension) {
$newFileName = substr($filename, 0, strrpos($filename, '.')) . '.' . $extension;
return $newFileName;
}

}
?>

Re: Fatal error: Class 'FileHelper' not found in...について

2013年8月30日 at 19:11
helpers/file.php は
何のために設置されているのでしょうか?
 

Re: Fatal error: Class 'FileHelper' not found in...について

2013年8月30日 at 20:58
操作して設置したことはなく、自動的に設定されていたようです。
そのため、目的についてはわかりかねます。。。
 

Re: Fatal error: Class 'FileHelper' not found in...について

2013年8月30日 at 21:07
自動的に生成されることはないはずなので、意図的に設置されたものでなければ
一度、concrete5.6.1.2.ja/helpers/file.php ファイルを リネーム(file.bak 等)等にして稼動してみてはどうでしょうか?

保証ができませんので、申し訳ないのですが自己責任でお願いします。

ただ、このファイルが以前からあったのであれば、今まで稼動していたことのほうが不思議です。。。。。
 

Re: Fatal error: Class 'FileHelper' not found in...について

2013年8月30日 at 21:48
ありがとうございます。

そうですか・・・。インストールの際に(http://concrete5-japan.org/help/install/hosting/sakura/)に記載のもの以外については、直接ファイルを操作したことはなかったのですが、、、

ご教示頂いた方法を試してみたいと思います。

また作業後にご報告いたしたいと存じます。