2021年4月 この範囲を時系列順で読む この範囲をファイルに出力する
てがろぐを設置して動作テストをしています。
サーバーのエラーログに以下のようなエラーが表示されます。一通り機能を試しましたが、動作には何も問題ありません。
[cgi:error] AH01215: Argument "" isn't numeric in numeric ne (!=) at tegalog.cgi line 4296.: /CGI設置パス/tegalog/tegalog.cgi, referer: https://サイトURL/tegalog/tegalog.cgi?mode=admin
[cgi:error] AH01215: CGI::param called in list context from tegalog.cgi line 3502, this can lead to vulnerabilities. See the warning in "Fetching the value or values of a single named parameter" at /usr/local/perl/5.26/lib/perl5/site_perl/5.26/CGI.pm line 412.: /CGI設置パス/tegalog/tegalog.cgi, referer: https://サイトURL/tegalog/tegalog.cgi?mode=edit
レンタルサーバーはさくらです。
「vulnerabilities」は検索すると脆弱性と出たのですが、このエラーが出たまま使用しても大丈夫でしょうか?
fuwaimgが設定できるようになってとても嬉しいです……!できたらいいなーと思っていたので!ありがとうございます!
ソースを調べたところ、(カスタムdata属性が不要な場合でも)『画像リンクにLightbox用の属性を付加する』項目をOFFにすると、画像拡大用スクリプトが読み込まれない処理になっていました。^^;
不要な場合でも『画像リンクにLightbox用の属性を付加する』項目のチェックは入れてみて下さい。属性の文字列は何でも良いので、デフォルトのdata-lightbox="tegalog"等のままで可です。
次のバージョンでは修正します。ご報告ありがとうございます!
🍘Re:2123◆ご試用ありがとうございます。スクリプトの読み込みを必要とする処理の部分でちょっと実装で抜けていたところがあったかも知れません。調べてみます。そして、img要素にclassが要るんだとばかり思っていたんですが、a要素だったんですね。(笑) 勘違いしていました。FuwaimgのJavaScriptソースを見てみると、class名「fuwaimg」の要素リストを取得した後で、closest('a')の記述で(ルート方向に直近の)a要素リストを取得していたので、元々内側のimg要素のclass属性に書いても動くように作られているような気がします。これならa要素とimg要素の間に何か別の要素があっても大丈夫でしょうし、柔軟な作りですね。しかしまあ、本来の記述方法に従っておく方が良いので、ちょっと設定欄は見直します。(^_^;;; カスタムdata属性の指定欄と並べて、追加classの入力欄を設けた方が良いですね。情報感謝です。
β版配付ありがとうございます。早速アップデートしてfuwaimgで試してみました。
しかし何故かCSSとJavaScriptを読み込んでくれません。JavaScriptが挿入されるはずのところには「Lightboxを必要としない状況なのでスクリプトは挿入されません」とソースに表示されるだけです。
class属性は挿入されて問題なく動くのですが、fuwaimgはa要素にclass属性を書くことになってるのにimg要素に書いても動くのは何故?😅(cssとJavaScriptをskin-cover.html直書きで確認しました)
スクリプトが挿入されないのはサーバー環境に依存してるのかもしれませんが、とりあえずご報告まで。
#報告
🍘Lightbox以外の画像拡大スクリプトを読み込む機能を追加。
🍘画像掲載時のimg要素に、指定のclass名を付加する機能を追加。
これまでCGIソースを直接カスタマイズしてLightbox以外のスクリプトに対応させてこられた方は、上記の設定機能でうまくいくかどうかをお試し頂ければ幸いです。
詳しくは、上記の開発進捗状況報告ページやNo.2118をご覧下さい。
🍘Re:2120◆ああ、辛うじてトラブルシューティングに書いていましたか。自分でも忘れていました。(^_^;) よく見つけて下さいました。もうちょっと情報を拡充しておこうと思います。設定値もいろいろ試して下さってありがとうございます。参考になります。デフォルトの2がダメだと1もダメな可能性が高そうだとは思っていましたが、0で行けて良かったです。そういえば、以前に同様の問題に直面した方は0でもダメだったのでした(結局解決できず)。そこを踏まえて、値「9」を追加したのを思い出しました。9は、サーバからの情報取得を諦めて決め打ちにするというパターンなので、これは誰でも確実に動作するとは思っています。では何故それをデフォルトにしないのかというと、代わりにCGIファイル名をtegalog.cgi以外に変えると動かなくなったり、SSIで埋め込んで使いたい場合には動作に支障が出る(可能性がある)からなのでした。
🍘Re:2119◆なるほど、確かにRSSフィードに出力されている内容を使おうとするとそういう問題がありますね。RSSからの埋め込みを自分では使っていないのでそこまで気付いていませんでした。というか、この記事を書いた時点では、カテゴリ機能は存在しなかったのですが。(笑) PHPでもおっしゃるとおりfile_get_contentsで埋め込み用スキンの適用結果を読めるわけですから、その辺の情報も加えておく方が良さそうですね。情報をどうもありがとうございます。JavaScriptでどうにかしたい方でも、RSSを読むよりは埋め込み用スキンの適用結果をAjax的な何かで合成する方法の方が望ましい気もしてきました。
緑茶の絵文字🍵は存在しているのだけど、英語名が「TEACUP WITHOUT HANDLE」になっている。英語でTEACUPと言ったときに中に入れるのは紅茶じゃなくて緑茶で良いのだろうか。言語圏によって絵文字の液体の色が異なっていたりしないのかな。
まさにトラブルシューティングの何も表示されなかったり、一部の画面だけがエラーになったりする場合を読んで弄ってみた次第です。ちなみに値は9でもOK👌でしたが、1はエラーが出て駄目でした。一応投稿はできるけどアクセスするたびに投稿され続けるっぽい。めちゃくちゃ投稿削除しました😅
2115です。RSSフィードだとimgタグを挟むaタグが含まれないので、原寸画像へのリンクや拡大表示をしたい場合に自力でaタグを生成する等の処理を加えないといけないのが面倒だなと思いまして…。あと埋め込むページからカテゴリへのリンクも入れようとしていたのですが、これもRSSフィード経由だと自力でやらなければいけない事が予想以上に多くて…。(カテゴリidとカテゴリ名を連想配列で紐付ける処理、2つ以上のカテゴリを指定していた場合の分割処理、新しいカテゴリが増えた時は連想配列部分を手動で増やす必要があるなど)
そんな中にししさんの解説記事を見て埋め込み用スキンを試しに作ってみたら、悩んでいた事が全部一気に解決して「うおおおお!すっげー!!てがろぐ最高!!!」と声を出して唸りました。埋め込む方法の解説記事は早い段階で見つけてはいたのですが、SSIおよびshtmlの方法だから関係ない・PHPならRSSフィードからやるしかないと思い込んでいたので最初はあまりじっくり読んでいなかったのです(^^;)何から何まで痒い所に手が届くCGIを作って下さって、そして便利な使い方の解説まで公開して下さって本当に感謝しております。
話は変わりますが、今まで自分でCGIのソースに手を加えてfuwaimgを使っていたのでVer 3.2.4β版の管理画面を早速覗きに行って喜んでます。次回のアップデートが楽しみです!
下図のように、管理画面の[設定]→[システム設定]で、画像拡大用スクリプトのURLを指定できるようになったほか、対象画像にclass名を加えないと動作しないFuwaimg等にも対応できるよう、画像に任意のclass名を付加できる項目(緑色矢印部分)も追加しました。LightboxやFancyboxのようにカスタムdata属性を使う場合は、従来通りLightbox用属性の付加項目(黄色矢印部分)を使えます。
➡この設定を実際に見るには、第2試験場へどうぞ。
🍵Re:2116◆ぎょへー!ぎょへー!ぎょへー!)゚o゚( ご報告をどうもありがとうございます。よくその解決方法にたどり着きましたね!?!?!? (;゚Д゚) 「CGIは設置できて動作もしているが投稿や設定操作ができない」という相談は過去に1回か2回くらい受けたことがあるのですが、よくよく調べると今回ご報告頂いたように「CGIのデータ送信先がサーバ側のディレクトリを含む形になっている」という謎の動作だったのですよね。そのときにその解決策を提示できたのだったかどうか微妙に自信がありません。どうだったかな……。なんか結局「このサーバでは諦めます」という結果になった方も1名いらっしゃったような気がするのですが。どひー!どひー!どひー! 貴重なご報告をありがとうございました。早めにトラブルシューティングに載せておきます。
🍵Re:2115◆ご活用をどうもありがとうございます。ちなみにですが、RSSフィードで埋め込まれていたときの「画像を含む投稿で不都合」というのはどんな問題だったのでしょうか。もしよろしければ教えて下さい。
最初に唐揚げの量を見て「全部食べるとちょっと食べすぎになるかな」とは思っていたものの、お腹が減っていたので結局全部食べたのでした。ぐふー。(今はお腹いっぱい)
>>2113
2111です。お二方ともご回答ありがとうございます。早速設置してみました。
レンタルサーバーの仕様通りパスとパーミッションを変更し、tegalog.cgiにもアクセスできたのですが、設定を変更しても投稿しても「そんなページないよ(意訳)」という英文のページに飛ばされてしまってちょっと頭を抱えました。
よくよくURLを見るとなんかおかしい。○○.com/home/ユーザー名/public_html/○○.com/~となってました。なんでホームディレクトリのパスがくっついてくるの…。そこでCGIの高度な設定にあるmy $howtogetpath = 2;の値を0に変更したらうまく動くようになりました。
ちなみにサーバーはカラフルボックスです。
#報告
てがろぐCGIが出力した最新の1件を任意の場所に埋め込む方法 がありますが、.phpのページに埋め込みたかったので力技で実現・成功しました。レアケースだと思いますが同様の事がしたい人がいらっしゃいましたら参考までに…。
やり方
①にししさんの解説 に従って「てがろぐCGIで最新の1件だけを簡潔に表示するスキン」を作る
②下の引用枠部分(<?phpから?>まで全部)をテキストエディタにコピペして、要設定部分を自分のサーバー仕様に合わせて書き換える。そしてtegalog_umekomi.phpなど任意の名前で、文字コードをUTF-8Nに指定して保存
③埋め込む側の.phpファイル内の埋め込みたい部分に include "tegalog_umekomi.php"; と書く
④埋め込む側のphpとtegalog_umekomi.phpを同じディレクトリにアップロード
<?php
//----------要設定部分----------
//てがろぐCGIがあるフォルダの絶対パスもしくは埋め込む.phpファイルから見た相対パス
//cgi本体のファイル名は含めない、最後の/は入れない
$tegalog_pass = "ttps://example.com/tegalog";
//てがろぐCGI本体のファイル名
$tegalog_cgi = "tegalog.cgi";
//埋め込み用スキンが入ってるフォルダ名
$skinname = "umekomi";
//てがろぐ内部画像が入ってるフォルダ名
$naibuimg = "images";
//---------設定ここまで---------
//埋め込み用スキンがHTML出力した内容を$content変数に入れる
$umekomi_html = "$tegalog_pass"."/"."$tegalog_cgi"."?skin="."$skinname";
$content = file_get_contents($umekomi_html);
//埋め込み用スキンがHTML出力した相対パス部分を置換
//内部画像の表示
$content = str_replace("src=\"$naibuimg/", "src=\"$tegalog_pass/$naibuimg/", $content);
//内部画像へのリンク
$content = str_replace("href=\"$naibuimg/", "href=\"$tegalog_pass/$naibuimg/", $content);
//カテゴリやハッシュタグなどCGIの機能を使ったリンク部分
$content = str_replace("href=\"?", "href=\"$tegalog_pass/$tegalog_cgi?", $content);
//リンク部分で、埋め込み用スキン指定になっているのを解除
$content = str_replace("skin=$skinname", "", $content);
//出力
echo $content;
?>
最初はRSSフィードを読んで出力する方法でやっていたのですが、画像を含む投稿で不都合があったのでこっちの方が良いです。また、この方法ならSSIの時同様きちんとPowered-by表記も入ります(^∀^)
無意識のうちに寝ぼけつつも回答を書いて投稿していたのかな、と一瞬思ってしまうほど完璧な回答をどうもありがとうございます。一分の漏れもない完璧かつ分かりやすい回答です。>>2112
🍵Re:2111◆サーバを移行する際には、基本的には tegalog.cgi の存在する場所にあるすべてのフォルダとファイルをまとめて移動すれば良いです。もし移動するファイル数を最小限にしたい等の事情がある場合は、おっしゃるファイル群に加えて psif.cgi(=パスワード・セッションID格納ファイル)もコピーして下さい。psif.cgiファイルをコピーしないと、全ユーザのパスワードが未設定に戻った状態で稼働してしまいますのでご注意下さい。
※psif.cgiファイルには、全ユーザのパスワードがハッシュ化されて保存されています。ハッシュ化というのは「元には戻せない暗号化」のような仕組みなので、ファイルの中身を覗いてもパスワード自体は分かりません(元のパスワード文字列に復元する技術的な方法が存在しません)。しかし、パスワードの正誤判定には必要です。
なお、psif.cgiファイルにはセッション情報(=ログイン状態)も保存されているのですが、ログイン状態は「ドメインに対するCookie」で維持されていますので、別ドメインに移動させるとログイン状態は解除されます。(※サーバを移動してもドメインが変わらなければセッションは維持できますが。)
その際、管理画面の下部に灰色で小さく表示されている「現在のログイン件数」は、(psif.cgiファイルで管理されているため)仮に『前のサーバで3件のログインがある状態』で新サーバに移行すると、『本来は誰もログインしていないのに、ログイン件数が3件ある』と認識されてしまいます。その状態でも動作に支障はありませんが、その表示に不都合を感じられるようでしたら、一度『全員を強制ログアウト』を実行して、ログイン件数を0にリセットしてからお使い頂くと良いです。#🌱豆知識
🍵Re:2110◆サポートありがとうございます。(╹◡╹) おっしゃるとおりです。
🍵Re:2109◆仕様上の上限はありません。何万文字でも投稿可能です。(参考:No.160)
🍵Re:2108◆いろはにほへとちりぬるを(続きは覚えていない)
睡眠も、足りない。_(:3」∠)_
>>2111
サーバーを移転予定なんですが、てがろぐを引き継ぐときは動作確認してからtegalog.xml、tegalog.ini、imagesフォルダを上書きすれば大丈夫なんでしょうか?
①現在(移転前)のサーバー上にあるtegalogフォルダを丸ごとFTPソフトでダウンロードする
②そのダウンロードしたtegalogフォルダを新しいサーバー(移転先)にアップロードする。投稿した画像ファイルまでアスキーモードでアップロードしてしまわないように注意
③新しいサーバーの仕様にあわせてパーミッションを設定 し直す
…で、過去ログや設定もそっくりそのまま移転出来ますよ。私はただの1ユーザーですが、実際にこの方法で別サーバーに移設しました。移転先のサーバーの仕様によってはtegalog.cgiの1行目 #! /usr/bin/perl の部分を書き換えないといけないかもしれませんが大抵これだけで行けるはずです。
#質問
>>2109
文字数の上限はあるのかな?
単なる1ユーザーですが、上限はなかったはずです。確か1投稿百万字でも書けるって話だったような。
🍨Re:2100◆たしかに解説分量が多すぎて情報を見つけづらい問題はありますね。そこはどうにかしたいと思ってはいるのですけども。画像ディレクトリのパーミッションは本当にあるあるなので、ここでも豆知識タグでNo.1515やNo.1218で年1回書いていたりするのですけども(^_^;)、焼け石に水みたいな感じですね。豆知識とFAQをまとめたページを作ろうとはしていまして、それができたら多少は(情報提供の分かりやすさが)マシになるかな……と期待しています。◆suEXECサーバのお知らせもありがとうございます。完全無料なサーバでも採用されているのですね。(採用する方が安全になるので、どこでも採用される方が望ましいわけですから、驚くことではないかも知れませんが。)
🍨Re:2101◆お知らせありがとうございます。(╹◡╹)ノ
🍨Re:2102◆お知らせありがとうございます。(╹◡╹)ノ
他にもお使いのサーバでsuEXEC対応でしたらぜひお知らせ下さい。➡緩募
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141