スレッド一覧 > 記事閲覧
[247] PHPバージョンについて
日時: 2024/02/19 20:27
名前: 声優共演検索◆h/gfidhaZo ID:iFb6YMlw メールを送信する
参照: http://seiyu.ie-t.net/

いつもお世話になっております、貴サーバーを利用させてもらっている者です。

貴サーバーのPHPのバージョンは7系の最終バージョン(と思われる)7.4.33ですが、今後8系に移行する御予定などはございますでしょうか?

それと貴サーバーのコントロールパネルで実現可能か分からないのですが、利用するPHPのバージョンをコンパネユーザーが変更できるとありがたいです。

質問と要望を記載しました。

お手数ですが、ご回答のほどよろしくお願いします。
メンテ

(全部表示中) もどる スレッド一覧 新規スレッド作成

Re: PHPバージョンについて ( No.1 )
日時: 2024/02/20 12:27
名前: ちらみ◆kBt3KPJY0E ID:DL3KDi46

PHP8.xへの移行は予定しています、というか皆さんが良ければすぐにでも上げたいくらいです。

PHPの複数バージョンについては各バージョンでコンパイルしたPHPをコンパネでバージョン選択してもらう事もできます。
今のOSにする前(CentOS7時代)はPHP7をメインとして救済のためにPHP5.6も選択できるようにしていました。

サーバ全体にグローバルなPHPを7.4から8.3にあげるのが一番楽なのですが、それだと古いプログラムをご利用の方がPHP8では動かないといった問題が生じると思いますので、以前と同様にPHP7.4を別個にコンパイルしておいてグローバルを8.3に上げた後も古いプログラムの救済のために7.4を選択できるようにしようかなと思ってます。

下記、参考までに。
https://ie-t.net/information/php7%e3%81%ae%e5%b0%8e%e5%85%a5%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/
メンテ
Re: PHPバージョンについて ( No.2 )
日時: 2024/02/20 13:00
名前: 声優共演検索◆h/gfidhaZo ID:k.OHg8BE メールを送信する
参照: http://seiyu.ie-t.net/

お忙しい中、ご回答ありがとうございます。

PHP 7.4系から8系に上げると速度向上が見込めると知り、質問・要望した次第です。
ちらみ様のお考え、理解致しました。
確かにPHPの古いバージョンでしか動かないプログラムのユーザさんもいらっしゃるかもしれませんので7系と8系の選択制は配慮の行き届いた対応だと思います。

それでは移行の実施を心待ちにしております
メンテ
Re: PHPバージョンについて ( No.3 )
日時: 2024/02/20 15:21
名前: ちらみ◆kBt3KPJY0E ID:DL3KDi46

少し時間があったので別個でPHP7.4をコンパイルしてコンパネで公開しましたので、デバッグをお願いしても良いですかね

PHP 7.4 (Default) ← これまでのグローバルPHP
PHP 7.4 ← 今回入れたPHP7.4

動作的に大きな問題が無ければ7.4ユーザーに対する救済はあると判断してグローバルを8.3に上げる事を検討します。
メンテ
Re: PHPバージョンについて ( No.4 )
日時: 2024/02/20 16:18
名前: 声優共演検索◆h/gfidhaZo ID:k.OHg8BE メールを送信する
参照: http://seiyu.ie-t.net/

いつもお世話になっておりますのでデバッグ(テスト)させて頂きます。

コントロールパネルから「PHP 7.4 (Default)」ではない「PHP 7.4」に変更し、
Build Dateが「Feb 20 2024 13:11:32」であることを確認してデバッグを「http://seiyu.ie-t.net」上で行いました。

・閲覧画面:3ページ
・管理画面:2ページ
・チェック用画面:2ページ
・時間指定プログラム:3本
を実行して確認したところ特に問題はありませんでした。
logディレクトリ直下の今日の分のエラーログにもエラー・警告・Noticeは出力されていませんでした。
私がお借りしている範囲ではPHPの問題は確認されませんでした。

参考になれば幸いです
メンテ
Re: PHPバージョンについて ( No.5 )
日時: 2024/02/20 18:37
名前: ちらみ◆kBt3KPJY0E ID:DL3KDi46

早速のデバッグありがとうございます。

私もテストサイトで確認する限りは問題無さそうなので、近日中にPHP8.3へのアップデートを実施します。
一部、無保証ながら業務で使われている方もいるので夜の時間帯で実施しようと思います。

本業のタスクもあるため基本は事前調整・報告無しで、実施後にこちらで報告します。
PHP8.3で問題が発生したコンテンツはユーザー側でPHP7.4を選択してもらう事で救済予定です。

やや強引で恐縮ですが、恐らく多くのサイトで問題は発生しないだろうという事と、この作業の予定が本業の支障にならないようにしたいためご理解願います。(To 皆さま)
メンテ
Re: PHPバージョンについて ( No.6 )
日時: 2024/02/20 20:24
名前: 声優共演検索◆h/gfidhaZo ID:k.OHg8BE メールを送信する
参照: http://seiyu.ie-t.net/

お忙しい中、ご対応ありがとうございます。

自分のタイミングで「PHP 8.3」に切り替えたい場合は今の段階でDefaultの付かない「PHP 7.4」に変更しておけばよろしいのでしょうか?
PHP 8.3に上げても問題は起きないとは起きないとは思いますが、念のために。

お手数ですが、ご回答のほどよろしくお願いします。
メンテ
Re: PHPバージョンについて ( No.7 )
日時: 2024/02/20 20:58
名前: ちらみ◆kBt3KPJY0E ID:DL3KDi46

はい。今の段階で「PHP 7.4」の方にしておけばグローバルを8.3に上げたとしても影響はありません。

但し、入替中は10-20分程度止まりますのでそこはご了承願います。
メンテ
Re: PHPバージョンについて ( No.8 )
日時: 2024/02/20 21:34
名前: 声優共演検索◆h/gfidhaZo ID:k.OHg8BE メールを送信する
参照: http://seiyu.ie-t.net/

承知しました。自分のタイミングでPHP 8.3に上げるかどうか検討致します。

お忙しい中、相手して頂きありがとうございます
メンテ
Re: PHPバージョンについて ( No.9 )
日時: 2024/02/21 17:18
名前: ちらみ◆kBt3KPJY0E ID:BT5XZWME

当該アカウント専用で「PHP 8.3」を公開してみました。
但しPHP拡張モジュールはロードされませんので飽くまで参考程度で事前に確認下さい。
メンテ
Re: PHPバージョンについて ( No.10 )
日時: 2024/02/21 17:46
名前: 声優共演検索◆h/gfidhaZo ID:xOlmkEEg メールを送信する
参照: http://seiyu.ie-t.net/

先行対応ありがとうございます
コントロールパネルのPHP Vesionに8.3が追加されているのを確認しました。
人の少なそうな時間帯に8.3に変更後に動作確認し、結果を改めてご連絡します。
メンテ
Re: PHPバージョンについて ( No.11 )
日時: 2024/02/22 13:40
名前: 声優共演検索◆h/gfidhaZo ID:Y5krv/Xk メールを送信する
参照: http://seiyu.ie-t.net/

PHP 7.4から8.3に変更し自サイトを確認したところ、7.4では発生しなかったWarningが発生するようになりました。
調べたところ7.4から8.0でそれまで表示されなかったWarningが表示されるようになったとのことです。

【PHP7から8へ切替】Warning: Undefined variableが表示された場合の修正方法 | IT解決コラム
https://it-column.mjeinc.co.jp/archives/3513

私の場合は「PHP Simple HTML DOM Parser」というライブラリを使っていて、
そこで未定義のプロパティにアクセスしたことでWarningが発生していました。
似たようなコードをpaiza.ioに記載しました、paiza.ioのPHP Versionは8.1.9です。
https://paiza.io/projects/LrntzSdxrudw7Q_t4HdIbw

未定義のプロパティはともかく未定義の変数にアクセスすることは十分にありえることなので(WordPressなどのCMSを使っていると特に)、
他の利用者の方もログにWarningが記録されることが予想されます。
(私の場合はdisplay_errorsをOnにしていたため画面にも表示されていました)

簡単な解決方法はWarningを検知しない設定にすることで、上記paiza.ioにやり方を記載しています。
根本的な解決策は未定義の変数・プロパティにアクセスしないようにプログラムを修正することです。
私は後者・前者のどちらも行って対応しようと考えています(画面にエラーを表示する設定にしているため)

以上、結果報告でした。
メンテ
Re: PHPバージョンについて ( No.12 )
日時: 2024/02/22 18:23
名前: ちらみ◆kBt3KPJY0E ID:e3zpoUIo

検証とご報告をありがとうございます。

サーバ全体設定のphp.iniではdisplay_errorsはOFFなので、明示的にONの方以外はログに記録されてしまう事以外に問題は無いかなと思いました。

私自身、既にサポートの無い7.4を使い続けるのも気になっていたので今回の問い合わせを機に8.3への変更を決行したいと思っています。
メンテ
Re: PHPバージョンについて ( No.13 )
日時: 2024/02/22 18:51
名前: 声優共演検索◆h/gfidhaZo ID:Y5krv/Xk メールを送信する
参照: http://seiyu.ie-t.net/

ちらみ様の意向、理解しました。

時間が無くて結果報告に含めきれなかった「速度向上」についてですが、大きな数を文字列で計算するPHPの「BCMath」を使ったお手製ベンチマークで調べました。
結果は8.3の方が早い・安定する、でした。

お手製ベンチマークのURL(paiza.io)がこちらです(paiza.ioはBCMathモジュールがインストールされてない?ため動作しません)
https://paiza.io/projects/RTYc6uDqDKu7Hy-BuEc_eg

■結果

PHP version 7.4.33 (Before)

7.3526668548584 sec.
9.1178860664368 sec.
6.4656918048859 sec.
7.8897581100464 sec.
10.860679149628 sec.
11.142512083054 sec.
6.9362699985504 sec.
6.3370621204376 sec.
15.720798015594 sec.
6.4699740409851 sec.
--------------------
Min: 6.3370621204376 sec.
Ave: 8.82932982444766 sec.
Mid: 7.6212124824524 sec.
Max: 15.720798015594 sec.

---

PHP Version 8.3.3 (After)

6.5621728897095 sec.
6.4722361564636 sec.
6.3993890285492 sec.
6.5084700584412 sec.
6.4470300674438 sec.
6.3642098903656 sec.
6.4180729389191 sec.
6.5234808921814 sec.
6.4500598907471 sec.
6.3397800922394 sec.
--------------------
Min: 6.3397800922394 sec.
Ave: 6.44849019050599 sec.
Mid: 6.44854497909545 sec.
Max: 6.5621728897095 sec.

PHP 7.4は速度に大きくバラつきがあるのに対して、PHP 8.3は安定して早い結果になりました、参考までに。
メンテ
Re: PHPバージョンについて ( No.14 )
日時: 2024/02/22 22:29
名前: ちらみ◆kBt3KPJY0E ID:e3zpoUIo

詳細な検証ありがとうございます。

先ほど(2024/2/22 22:10頃)しれっとグローバルなPHPを7.4 --> 8.3に変更しました。
アップグレードしたのでほぼ無停止です。

時間ある時にお知らせページに報告しようと思います。

取り急ぎご連絡まで。
メンテ
Re: PHPバージョンについて ( No.15 )
日時: 2024/02/22 22:40
名前: 声優共演検索◆h/gfidhaZo ID:Y5krv/Xk メールを送信する
参照: http://seiyu.ie-t.net/

ご対応ありがとうございます。

Warning箇所を修正次第にPHP 8.3に変更しようと思っています。
X(旧Twitter)で教えて頂いた「Let's Encrypt」をオンにしてSSL化も予定しています。どうやら「http://」固定で書いてる箇所があるのでソースも修正しないといけないようです。

この度は色々とありがとうございました
メンテ
Re: PHPバージョンについて ( No.16 )
日時: 2024/02/23 19:46
名前: Kou ID:6vKNkFjk
参照: https://tnsk.ie-t.net/

完全なるメモですが皆さんに共有したいのでここにお知らせします。

PHP8にアップデートしてから文字化けとSQL接続不可が発生するようになりました。
色々調べてみたところ、
・PDO宣言を厳格にする
・php.iniのdefault_charsetが空欄からUTF-8になったので、ini_setを使用し、変更する
の二つをしなければいけないことがわかりました。
自分のサイトもこれから変更していきます。
メンテ
Re: PHPバージョンについて ( No.17 )
日時: 2024/02/23 20:42
名前: Kou ID:6vKNkFjk
参照: https://tnsk.ie-t.net/

今さっきini_setを使用してエンコーディングを書き換えたらメモリがいっぱいと言われました。

PHP7.4の時とプログラムは全く同じです。
どうすればいいでしょうか?
わかる方がいましたらよろしくお願いします。
メンテ
Re: PHPバージョンについて ( No.18 )
日時: 2024/02/23 21:21
名前: 声優共演検索◆h/gfidhaZo ID:/dsfjQYU メールを送信する
参照: http://seiyu.ie-t.net/

Kou さんへ

私もPDOを使用していますが文字化けとSQL接続不可は発生しませんでした。
参考まで私のPDO宣言は以下の通りです。
https://paiza.io/projects/Le5M3NJ2FI0klVMwSkpF9w
※paiza.io 上では動作しません

PHP 8.0対応には興味があるので、よろしければ参考にされたサイトのURLなどを教えて頂けないでしょうか?
メンテ
Re: PHPバージョンについて ( No.19 )
日時: 2024/02/24 08:30
名前: Kou ID:ly/AMgFs
参照: https://tnsk.ie-t.net/

自分が参考にしたサイトは以下の通りです。
https://tadtadya.com/php8-consistent-type-errors/
https://teratail.com/questions/118912

文字化けは
変更前:JF6DEUの備忘録
変更後:JF6DEU?????????????
のようにUTF-8の日本語が認識できないみたいです。(よくわかりませんが...)
ここの変換関連のプログラムは以下のようになっています。
https://paiza.io/projects/4c50WeqlL6XAK9U6kVH3vQ

SQLについては、PHP7.4までは独自クラスの「SQL」を作るためにclass SQLとだけしていたものをclass SQL extends PDOと変更したら動きました。
メンテ
Re: PHPバージョンについて ( No.20 )
日時: 2024/02/24 18:20
名前: 声優共演検索◆h/gfidhaZo ID:m1WBZU0E メールを送信する
参照: http://seiyu.ie-t.net/

Kou さん

参考にされたサイトを確認しました。

こちらのサイトでは「関数の引数と戻り値を厳密にでき、PHP 8.0からはそれを守らないとエラーになる」ということが書かれており、
文字化けとSQL接続不可とはあまり関係が無いように感じました。
https://tadtadya.com/php8-consistent-type-errors/

こちらのサイトはPHP 5.4→7.0アップグレードの話で、家Tサーバーさんに該当するかは不明です。
https://teratail.com/questions/118912
現在、家Tサーバーさんのコントロールパネルで設定できる「PHP 8.3 (Default)」と(救済策として残された)「PHP 7.4」は、
「default_charset」はどちらも「UTF-8」です。
アップグレード前の「PHP 7.4」は確認することができませんがおそらく変更されていない(UTF-8だった)と思われます。

変換関連のプログラムを拝見しました。
変換が必要ということはPHPファイルはUTF-8以外のエンコーディングを使われているのでしょうか?
PHPファイルのエンコーディングがUTF-8であれば変換は特に必要ないかと思われます。
https://paiza.io/projects/4c50WeqlL6XAK9U6kVH3vQ

> SQLについては、PHP7.4までは独自クラスの「SQL」を作るためにclass SQLとだけしていたものをclass SQL extends PDOと変更したら動きました。
独自クラス「SQL」でPDOクラスを使われていたという認識で合っていますでしょうか?
独自クラスをPDOのサブクラスにしたら動作した、というのは少し引っかかります。
可能性としてはPDOのコンストラクタの記述が7.4までしか対応していないもので動作せず、
PDOの子クラスにしたことで親クラスのコンストラクタが呼ばれ8.3でも動作するようになった、ということが考えられます。

PDOコンストラクタの記述を載せて頂ければ何か分かるかもしれません(DB名やユーザ名・パスワードは伏せた形で)。
メンテ
Re: PHPバージョンについて ( No.21 )
日時: 2024/02/24 23:35
名前: Kou ID:vBG20Tb.

確認しました。
関数関連だと思っていていたのですが...全然違いましたか...
あと、default_charsetの件については自分もどうだろう...という感じです。
分かりませんがもしかしたら...という気持ちで投稿しました。

文字コード変換関連については、設定ファイルを別のPHPファイルで保存して、それを変換して使用している...という感じです。

>独自クラス「SQL」でPDOクラスを使われていたという認識で合っていますでしょうか?
はい、その通りです...
コードの公開についてはちょっと...という感じなので明日またメールを送ります。
その際にはよろしくお願いします。
メンテ

(全部表示中) もどる スレッド一覧 新規スレッド作成

題名
スレッドをトップへソート
名前
「名前#任意の文字列」でトリップ生成
E-Mail
入力するとスレッドの通知メールを受け取れます。(非表示)
URL
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存