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

2012年3月25日 at 0:32

いつもありがとうございます。

ロリポップ(チカッパプラン)にconcrete5(Ver5.5.1)を新規インストールしたところ下記のエラーが発生しました。

Warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 534271 is not allowed to access /tmp owned by uid 0 in /home/users/1/ユーザー/web/ディレクトリ/concrete/libraries/3rdparty/Zend/Cache/Backend.php on line 185

「予期せぬエラーが発生しました。」

「Could not determine temp directory, please specify a cache_dir manually」

が表示されインストール出来ません。

改善方法はありますか?

よろしくお願いいたします。

添付: .jpg
タグ:

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');
}
 

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

2012年4月16日 at 11:59
あ! Another さん。原因が分かりました!

PHP.ini 設定で、Safe Mode が「On」になっています。「Off」にしてください!
 

ありがとうございます♪!

2012年4月17日 at 2:32
http://concrete5-japan.org/community/forums/install/post-4327/post-4336/post-4347/

上記で確認しました。

お手数をおかけして申し訳ありませんでした。