-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PHP 8.xサポート #22
base: master
Are you sure you want to change the base?
PHP 8.xサポート #22
Conversation
af8b088
to
875f7d3
Compare
* 検索サービス切り替えの追加 * ff5ch.syoboi.jpサポートの追加 * find.5ch.netサポートの追加
* 廃止された関数の置き換え * 廃止された構文の置き換え * 変数の初期化 * ライブラリのアップデート
PHP 8.0.0でIt (´・ω・) works. |
https://github.com/pen/docker-rep2/tree/php8 を作って動かしてみました。以下のレポートはこちらのコンテナの作り方が悪い可能性も十分あります。 PDO対応ImageCache2のDBをsqlite3にできるのはうれしいですね。これでコンテナにmysqlを入れる必要がなくなりました。 ImageCache2ImageCahceを有効にしてスレを開くと画像リンクをスキャンしてサムネイルを作ろうとしますが、
こちらではいったん設定値を 最近読んだスレ「最近読んだスレ」をクリックすると
のようになり、Webサーバが500を返します。手元でsubject.php の当該箇所を
にしたところ、表示はされるようになりましたが、いろいろなスレを読んでも「最近読んだスレ」に登録されません。 |
scripts下のコード自動更新のためのスクリプトも同様のエラーが出ていました。
|
@pen テストありがとうございま(*´・ω・) ス-
既知の問題1 [IC2] PHPのビルド時にGDを有効化してもIC2から使えない
2 最近読んだスレを閲覧できない・自動登録されない
3 最近読んだスレのバッチ更新が出来ない
|
すみません、まだubuntuのaptでインストールされる8.0.0で試しています。 既存のデータフォルダではうまくいくことまっさらではなく、運用中のデータフォルダをコピーして試したところ、先日のレポートでエラーになっていたものが正常に実行されました。
既存のデータでも未使用だった機能運用中も使用せず空だった「スレの殿堂」をクリックすると、先日と同様のエラーになりました。
スレの「No.」をクリックするとスレの詳細/管理ウィンドウがポップアップしますが、そこで「殿堂入り±」をクリック(殿堂入りへの登録)するとエラーになりました。
履歴から外す・削除する「最近読んだスレ」の一覧からスレを開き、「No.」をクリック(ポップアップ)→ログの「履歴から外す」「削除する」のどちらも、クリックするとエラーになりました。
個人的見解アイテムがまだ一つもないときに一覧を表示させる・最初のアイテムを追加しようとするなどの処理でエラーが出るようです。経験的に「ない」「0個」のケースでは言語の「よしなに読み替える」能力(nilは0とみなすなど)に頼ってコードが書かれていることがあり、バージョンアップでそこが厳しくなると起こりそうなことが起きている感じがします。 ネットを検索すると「php7.2以降では引数の型判定が厳しくなったため、count()で警告が出るように… 」という話が多数みつかります。レポートでエラーを起こしているsizeof()はcount()の別名であり、php8では警告ではなくFatal Errorになるのだとすると説明がつきます。 また |
初期のdataフォルダから運用した際に起こるエラーですが、以下の手順でなくなることを確認しました。 rep2/subject.phpにて:
composer実行後、vendor/pear-pear.php.net/File_Util/File/Util.phpにて:
むろんこれらは対症療法だと承知しています。問題の特定や切り分けのお役に立てば。 |
詳細なレポートありがとうございま(*´・ω・) ス |
(また https://github.com/pen/docker-rep2/tree/php8 を使って試していますので、その問題の可能性があります) ImageCache2でDBをsqliteにしているときブラックリスト登録がエラーになる再現手順 準備
ブラックリストへの登録
データベース管理/ランク:0の画像を消去
データベース管理/ブラックリスト登録
データの状態
その他のメニュー
ほかのデータベースでは起こるのかこれが肝心なんですが、試していません。すみません。 |
@pen 修正しま(´・ω・) スタ |
データベース管理/ランク:0の画像を消去 が動かない何もせずに終了し、何もログに出しません。期間指定をしても同じです。 この機能、画像キャッシュ一覧でランクの操作を一切しないまま実行したときはすべての画像が消えるはず、という理解でいいですよね。 ImageCache2でmysqlに接続するdsnがわからないmysqldを立てて conf/conf_ic2.inc.php の dsn を変更して接続しようとしたのですが
PDO_MYSQLのdsnってどう書けばよいのでしょうか。
などを試しましたが、どれも同じエラーになりました。 ちなみに現在のopen774版だとdsnは
でうまくいっています。 |
画像削除修正しま(´・ω・) スタ DSN残念ながら使用しているORMがUNIX domain socketに対応していないようです |
画像削除期待する動作を確認しました。 DSN mysqlソケットいけました。
|
お勉強させていただきま(*´・ω・) スタ
https://dev.mysql.com/doc/c-api/8.0/en/mysql-real-connect.html |
ResFilterのコンストラクタはnullもしくはそれ以外を要求
皆様テストよろしくおねがいしま(´・ω・) スゥ-
変更
全般
PHP 8
ImageCache2
tGrep
破壊的な変更
ImageCache2のDSN
既知の問題
cherry-pick from junk2ool