CMS「すぐ使えるCGI」の開発者がご質問にお答えします

 

画像をアップできません (No. 244)

回答日: 2007-10-15

質問

「画像付 ウェブページ更新ツール Ver 1.22」の質問です。
Webサイト管理ツールで画像をアップしようとしますが、確認画面までは画像が表示され、確定ボタンを押すと、エラー表示が出ます。(画像はjpgで30KB程度)エラーの内容は以下の通りです。
よろしくお願いいたします。

処理の途中でエラーが起きました。
大変申し訳ありませんが、時間が経ってから再度作業して下さい。
このエラーが続く時は、管理者に連絡して下さい。CGI 設定中の場合、設定を確認して下さい。
(記事書き出しに失敗しました。rename: ../tempfiles/temp_1192346661/01.jpg-../../topics/4/01.jpg: Invalid cross-device link)
投稿日時: 2007-10-14 16:29

回答

■エラーの原因

このエラーは、一時ファイル用ディレクトリ( ../tempfiles/ )と書き出しディレクトリ( ../../topics/ )が異なる「デバイス」上にある場合に起こります。

「異なるデバイス」とは、(多少技術的な話になりますが)例えば以下のようなものです。

・2つの別々のハードディスク
・1つのハードディスク内の、別の「パーティション」。
 「パーティション」とは、1つのハードディスクを複数の領域に区切ったものです。

どちらかのディレクトリが「シンボリックリンク」という方法で別のデバイスにリンクしている場合も同様です。

「シンボリックリンク」というのは Windows 上の「ショートカット」や Macintosh 上の「エイリアス」と同様の機能です。


■対応方法

○デバイスの区切りが分かる場合

デバイスの区切りが分かっている場合、2つのディレクトリが同じデバイス上に配置されるように調整して下さい。

○デバイスについてよく分からない場合

お使いのサーバの構成がよく分からない場合、tempfiles/ の方を下記例のように topics/ ディレクトリの近くに移動して試してみて下さい。

◇例1:topics/ と同じ階層に名前を変えて配置

topics/
topics_tempfiles/

- 環境変数の変更例

$conf{file_dir} = '../../topics_tempfiles/';
$conf{relative_file_dir} = '../../topics_tempfiles/';


◇例2:topics/ ディレクトリ内に配置

topics/
 |-- tempfiles/

- 環境変数の変更例

$conf{file_dir} = '../../topics/tempfiles/';
$conf{relative_file_dir} = '../../topics/tempfiles/';
回答日: 2007-10-15