Re: 予期せぬエラーが発生しました。

2012年3月25日 at 1:36

phpが safe mode になっているんでしょうか?
もしそうなら、下記を参考に設定を変更してみてください。
http://lolipop.jp/manual/user/php-setting/

タグ:

Re: Re: 予期せぬエラーが発生しました。

2012年3月25日 at 22:07
ありがとうございます。

確認したところsafe modeになっていますが、ロリポップのマニュアルでは・・・

mbstring.language 『neutral』を選択します。

mbstring.internal_encoding  『UTF-8』を選択します。

default_charset  『UTF-8』を選択します。

となっています。

http://lolipop.jp/manual/blog/concrete5/

concrete5のVer5.4.2.2を設置していますが問題なく正常に動作しています。

Ver5.4.2.2とVer5.5.1での違いとは考えられないでしょうか?

よろしくお願い致します。
添付: .jpg
 

Re: 予期せぬエラーが発生しました。

2012年3月26日 at 10:25
木下です。

/concrete/libraries/3rdparty/Zend/Cache/Backend.php の 185 行目に記述されているコマンドが
所有者のuid が0 に設定されている /tmp をアクセスしようとしたところ権限が無いのでエラーになっている。
ということです。
また
「tempディレクトリを決定することができませんでした、手動でのcache_dirを指定してください。」
とも書かれていますので
.htaccess などによりそれらが指定出来ればいいのかも知れません。

(まだ、ソースを確認していないので確認後もう少し情報があれば書き足したいと思います。)
 

Re: 予期せぬエラーが発生しました。

2012年3月26日 at 10:29
木下です。

一応ソースを弄れば対処方法はあるようです。
http://forums.zend.com/viewtopic.php?f=69&p=63048

(まだソース見てません。なにか設定があればいいのですが)
 

Re: 予期せぬエラーが発生しました。

2012年3月26日 at 10:42
木下です。


エラーが発生していた場所は getTmpDir という関数で 一時ファイルを作成する為のディレクトリを
取得する関数です。 getTmpDir は下記のように記述されていて色々な方法で一時ファイルを保存できるディレクトリ名を確認しようとし、それらが設定されていない場合は /tmpにファイルが書き込めるかチェックして書き込めればそのディレクトリ名を返す。なければ最終的にエラーとする。
という動作をしています。

従って、 
  upload_tmp_dir
を .htaccess で指定できればエラーは発生しなくなると思われます。

public function getTmpDir()
{
$tmpdir = array();
foreach (array($_ENV, $_SERVER) as $tab) {
foreach (array('TMPDIR', 'TEMP', 'TMP', 'windir', 'SystemRoot') as $key) {
if (isset($tab[$key])) {
if (($key == 'windir') or ($key == 'SystemRoot')) {
$dir = realpath($tab[$key] . '\\temp');
} else {
$dir = realpath($tab[$key]);
}
if ($this->_isGoodTmpDir($dir)) {
return $dir;
}
}
}
}
$upload = ini_get('upload_tmp_dir');
if ($upload) {
$dir = realpath($upload);
if ($this->_isGoodTmpDir($dir)) {
return $dir;
}
}
if (function_exists('sys_get_temp_dir')) {
$dir = sys_get_temp_dir();
if ($this->_isGoodTmpDir($dir)) {
return $dir;
}
}
// Attemp to detect by creating a temporary file
$tempFile = tempnam(md5(uniqid(rand(), TRUE)), '');
if ($tempFile) {
$dir = realpath(dirname($tempFile));
unlink($tempFile);
if ($this->_isGoodTmpDir($dir)) {
return $dir;
}
}
if ($this->_isGoodTmpDir('/tmp')) {
return '/tmp';
}
if ($this->_isGoodTmpDir('\\temp')) {
return '\\temp';
}
Zend_Cache::throwException('Could not determine temp directory, please specify a cache_dir manually');
}