画像全般が表示されません

  • ページ: BugTrack
  • 投稿者: 初心者?
  • 優先順位: 普通
  • 状態: 提案
  • カテゴリ:
  • 投稿日:
  • バージョン: 1.03

メッセージ

Skinはどれを利用しても、リンクにつくiconや下のリロードや下位ページ作成などのiconが表示されない jpgを添付しても画像だけのページ(http://hogehogei/?cmd=attach&pcmd=open&refer=FrontPage&age=0&file=test.jpg)を開いてもFirefoxだと「画像ファイル"(URL)"は壊れているため、表示できませんでした」と表示されます refによって画像を貼っても画像は表示されません(外部ページの画像は表示できる) txtファイルなら添付ファイルのリンクをクリックするとちゃんと表示はできます。 ただ画像もテキストファイルも詳細はparsererrorと表示されなにも見えません。 テキストファイルをrefによってリンクを貼ると下記のようなNoticeが表示されます。 Notice: Use of undefined constant LOCALZONE - assumed 'LOCALZONE' in /srv/http/pukiwiki/wiki-common/plugin/ref.inc.php on line 282 BugTrack/32のページを参考にmod_xsendfileを導入しましたが改善はされません。

動作環境は Apache: 2.2.24-1 PHP: 5.4.13-2 ArchLinuxARM


  • firebugでどのようなレスポンスが返っているか確認できますか? -- Logue?
  • firebugは使ったことが無いのでいまいち見方がわかりませんが、コンソールはImage corrupt or truncated: http://hogehoge/?cmd=qrcode&d=http://hogehoge/?FrontPage&s=0&v=0&e=M TypeError: tzCalculation_LocalTimeZone is not a function~~ js.php?file=skin (449 行目)と出てネットはGET default.png 404 Not FoundGET ui-bg_gloss-wave_55_5c9ccc_500x100.png 304 Not Modified code.jquery.comというのが多く出ています添付画像をクリックするとコンソールは"NetworkError: 404 Not Found - http://hogehoge/skin/image/ajax/error_bg.png"ネットはGET ?cmd=attach&pcmd=open&r...Page&age=0&file=test.jpg 304 Not Modifiedと出ていますちなみにfirefoxだけでなくChrome、IE10、Safariでも同じようにアイコン画像や添付画像は読み込めていない状態です。 -- 初心者?
  • Apacheにmod_sendfileモジュールが入っていないのならば、$use_sendfile_headerを0にしてみて下さい。 -- Logue?
  • mod_sendfileとはmod_xsendfileのことでしょうか?mod_xsendfileは入れていますが、attach.inc.php、cache_ref.inc.php、ref.inc.php、showrss.inc.php、それぞれの$use_sendfile_headerを0にしても改善されませんでした。今の状態でもwikiページを公開しているので現状を確認されたい場合は下記ページを参照してみてください。http://meto4d.ddo.jp/wiki/ --
  • とりあえず、html.phpのpkwk_common_header関数内の -- Logue?
    -	if ($modified !== 0){
    -		// 最終更新日(秒で)が指定されていない場合動的なページとみなす。
    -		// PHPで条件付きGETとかEtagとかでパフォーマンス向上
    -		// http://firegoby.theta.ne.jp/archives/1730
    -		$last_modified = gmdate('D, d M Y H:i:s', $modified);
    -		$etag = md5($last_modified);
    -
    -		header('Cache-Control: private');
    -		header('Expires: ' .gmdate('D, d M Y H:i:s',time() + $expire) . ' GMT');
    -		header('Last-Modified: ' . $last_modified );
    -		header('ETag: "'.$etag.'"');
    -
    -		if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ) {
    -			if ($_SERVER['HTTP_IF_MODIFIED_SINCE'] == $last_modified) {
    -				header('HTTP/1.1 304 Not Modified');
    -				exit;
    -			}
    -		}
    -		if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
    -			if (preg_match("/{$etag}/", $_SERVER['HTTP_IF_NONE_MATCH'])) {
    -				header('HTTP/1.1 304 Not Modified');
    -				exit;
    -			}
    -		}
    -
    -//		header('If-Modified-Since: ' . $last_modified );
    -
    -	}else{
    		// PHPで動的に生成されるページはキャシュすべきではない
    		header('Cache-Control: no-cache');
    		header('Pragma: no-cache');
    		header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    -	}
    
    のようにして、コメントアウトしてみてください。
  • if($modified !== 0){ から header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); } までをコメントアウトすればいいのでしょうか?header('If-Modified-Since: ' . $last_modified );の一行だけをコメントアウトすればいいのでしょうか? header('If-Modified-Since: ' . $last_modified );のいち業は既にコメントアウトされていて、if($modified !== 0){ から header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); } までをコメントアウトしましたが、改善はされていません。 -- 初心者?
  • 確認したところ、中身のデーターがまったく出力されていないようです。原因はヘッダーではなさそうです。添付ファイルディレクトリ内のファイルのパーミッションが666以上になってない、あるいは所有者がApacheの実行ユーザと異なっている、PHPの実行ユーザとApacheの実行ユーザが異なる(モジュール版の場合は関係ありません)など、サーバー側の権限設定などに原因があるかもしれません。 -- Logue?
  • 今更ですが、httpdのerror_logを拝見した所script.css.phpが/webroot/skin/image/iconset/default.pngを参照しているらしく(参照してほしい場所は/webroot/image/iconset/default.pngにある)、$image_dirの値をすこしばかり変えてみましたが改善はされず(../imageとなっているところを../../imageなど)、imageフォルダを/webroot/skinフォルダ配下に移動させてiconsetフォルダのパーミッションを655に変えてみたところアイコン関係はうまく表示されるようになりました。しかし、添付画像は表示されないままですが、 "Oh dear! Something went wrong! If the problem still appears let the page's admin know. Would you like to try again or reject the content?" とエラーメッセージが表示されるようになりました。 wiki-dataもattachもその配下のデータすべてのパーミッションは777でerror_logには何も表示されていません。JSON(ver1.2.1)もGD(ver2.0.34)インストールされています。 --
  • attachプラグインが正常に動作していないようです。PHPエラーが生じているはずなのでそのエラーを教えて下さい。詳細をクリックすると何も出力されないことから、getimagesize命令あたりでこけているような気がします。 -- Logue?
  • エラーメッセージが標準では出ていなかったためattach.inc.phpの内のgetimagesize()の@を削除してみたところ2つのエラーメッセージが表示されました。 PHP Notice: getimagesize(): Read error! in /pukiwiki/wiki-common/plugin/attach.inc.php on line 706 , referer: http://... PHP Notice: getimagesize(): Read error! in /pukiwiki/wiki-common/plugin/attach.inc.php on line 928, referer: http:// --
  • attach.inc.phpのは仕様のようですね。@をつけてエラーを消してください。ファイルが正常に読み込まれていない(plus_readfile()関数がちゃんと動いていない)ようなので、fileplus.phpのplus_readfile()関数を以下のようにしてみてください。それでもダメな場合、PHPのバッファ容量、PHPに割り当てているメモリやタイムアウトの設定などが原因かもしれません。もし、モジュール版PHPで動かしている場合はCGIモードやFPMモードでPHPを走らせるといいかもしれません。 -- Logue?
    function plus_readfile($filename)
    {
    	$file   = new SplFileObject( $filename, 'rb' );
    	$file->flock(LOCK_SH);
    	while (!$file->eof()) {
    		echo $file->fgets();
    	}
    	$file->flock(LOCK_SH);
    }
    
  • 指定通りに変えましたが以前改善されず、attach周りの関数などを自分なりに弄ってみてもまだまだ治らず、wiki-data以外をすべて新たにDLしたものを上書きしデバッグしていくとdefault.ini.phpによって画像が表示できるかどうかが変わるみたいです。問題はdefault.ini.phpによる設定する値が原因でなくフェイスマーク定義ルール、絵文字アイコン画像が原因で画像が表示されない状況になっていました。phpはNotepad++で編集していたのですが、default.ini.phpだけ文字化けしていて、文字コードを変えても治らずEmacsで読み取り(これは正常に読み込める)ファイル自体をすべてEmacsからNotepad++にUTF-8でコピペし利用していました。その際、下の絵文字関係の文字が変わっているとは気づかずに設定を行い、何故か画像関係全般に影響していたようです。メモ帳などの基本的なエディターを中心に編集しているので、この絵文字関係のために変数の説明がすべて文字化け起きている状態で編集しないといけないので分けるなどしていただきたいです。 -- 初心者?
  • default.ini.phpの文字化けの原因は、Unicode6.0の絵文字を指定しているからです。(このページで同じ文字化けが発生するかを確認してください)まだ、フルサポートしている書体がまだ少ないため文字化けのようにみえるかもしれませんが、正常な動作です。どうしても気になる場合は、和田研細丸ゴシックを指定してください。これは、iPhoneなどで普及が進む絵文字を使用できるようにするための処置です。 -- Logue?