質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

2524閲覧

PHP4.4.9をPHP7.2.6に変更する場合の内容を教えてください。

danchan

総合スコア8

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2018/07/21 23:10

編集2018/07/22 22:35

前提・実現したいこと

PHP初心者です。

現在、PHP4.4.9で稼動しております。
バージョンをPHP7.2.6に変更したいと考えております。

PHPのバージョンを上げたいのですが、バージョンを上げる場合
何を変更すればよいのかがわかりません。

変更に必要な

・項目
・参考になるURL
・参考書籍

などを知りたいです。

特に、変更するための項目(変更箇所)がどのくらいあるのかが
わかれば、それを元に勉強を進めたいと考えております。

おわかりの方、ご教授のほどお願い申し上げます。


■追加内容:7月23日(月)
環境を記載しておりませんでした。失礼いたしました。

【環境】
レンタルサーバー:Xサーバーを使用
OS:Linux
Apacheバージョン:2.4.6
MariaDBバージョン:5.5.x
PHPバージョン:PHP4.4.9

【Xサーバーの使用目的】
バックアップ環境として使用しております。

ただ、6月9日に最新サーバー環境への移行メンテナンスが
行われて、それ以降、文字化けが発生したため、PHPの
バージョンを変更したいと考えております。


気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

scsi

2018/07/21 23:20

os,現行のphpのインストール方法によって変わりますので、まず現行の環境を書いてください
tanat

2018/07/21 23:55

「現在、PHP4.4.9で稼動しております。 バージョンをPHP7.2.6に変更したいと考えております。」というのは、今動いているプログラムがあってそれを7.2.6に移行したいという事でしょうか?それとも単純に学習環境等をアップデートしたいという事でしょうか?
danchan

2018/07/22 22:39

scsi様、tanat様 質問を編集いたしましたので、ご確認いただけますと助かります。この投稿欄の記入がはじめてのため、編集して回答いたしました。ご教授のほど宜しくお願い申し上げます。
guest

回答4

0

PHPマニュアルページの下の方に、バージョンによるPHPの文法・機能の差異が書いてあります。
「PHP 4 から PHP 5.0.x への移行」から「PHP 7.1.x から PHP 7.2.x への移行」までの、「下位互換性のない変更点」を全部読んで、その機能を使っている部分があれば、どうするか考えて、PHP7.2.xで使える機能で書き直します。

対象プログラムの規模によりますが、初心者には非常に厳しい作業です。
まずは、プログラムを読んで「完全に」理解しましょう。

投稿2018/07/21 23:50

編集2018/07/21 23:51
otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

danchan

2018/07/25 23:48

ありがとうございます。PHPマニュアルのリンクでバージョンの差異を教えていただきありがとうございます。「PHP 4 から PHP 5.0.x への移行」と「PHP 7.1.x から PHP 7.2.x への移行」の手順のご指導ありがとうございます。確かに厳しいように感じます。マニュアルを元に理解に勤めて参ります。ありがとうございました。
guest

0

ベストアンサー

PHP4からPHP5へ移行した時のメモが参考になれば。
あー、PHP3絡みやリビジョンの違いによる問題もあるあも?
あと、実際に遭遇してないのもあります。

--- メモ ---
strtotime() で日時形式文字列からタイムスタンプ値が得られない
→パラメタで与える文字列に括弧や日本語文字列などが含まれると変換に失敗する ※特に曜日はNG

mb_convert_kana() で文字化け
→元の文字コードを明記

mb_convert_encoding() で文字化け
→元の文字コードを明記

メール送信内容が文字化け
→メール送信前に内部文字コードを宣言する mb_internal_encoding()

pg_NumRows でワーニング
→ pg_num_rows に変更

"\v" が特殊記号に認識された
→表記方法を変更

i18n_jp_hantozen() が無い
→ mb_convert_kana() に変更

is_a()
→ instanceof で代替

オブジェクト関連
→扱う場合は "&" を付けないように

オブジェクトを生成せずに使う関数
→ static で定義する

外部から(オブジェクトを生成せずに)使う関数
→ public で定義する

コンストラクタの重複定義
→クラスと同名の関数と __construct() は同時に定義できない(ワーニング)

$_GET / $_POST の更新処理
→ PHP4 では効いてないようだが PHP5 では効いてるよう

配列を破壊する関数
→まとめて書かずに分ける

クラス内のメンバ変数で const 定義したのが $this->xxx では参照できない
→ self::xxx で参照する

タイムゾーン関連で警告が出る
→ date_default_timezone_set('Asia/Tokyo');

smarty のプラグイン
→バージョンによって入ってたり入ってなかったりするものがあるので注意

エラーのフック処理
→PEAR内で発生するワーニングはスルーするように修正

配列を扱う関数 - array_merge(), in_array()
→配列を指定するパラメタに配列以外を指定したらエラーになるよう

{}による文字列へのアクセス
→PHP6で消えるので非推奨(らしい)

コンストラクタ(クラス名と同じ名前の関数)
→ static は指定できない

投稿2018/07/21 23:45

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

danchan

2018/07/25 23:51

ありがとうございます。ご自身の体験を元にした貴重な内容のご提示ありがとうございます。変更するにはやはり、見直す部分が沢山ありそうですね。コードを書き直す際にはぜひ参考にさせていただきます。ありがとうございました。
guest

0

PHP 4 前提で作られたコードは、セキュリティ的に危険なことが多いです。
設計上の問題もある可能性が高いので、一から作り直すことをオススメします。

追記
文字化けなら、以下を確認してみてください。
default_charset

いずれにしても、一から再設計のほうが良いと思います。

投稿2018/07/22 00:05

編集2018/07/24 02:13
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

danchan

2018/07/25 23:43

ありがとうございます。一から作り直した方が、セキュリティの面でもコードの把握の面でも、早く対応できるように感じました。文字化けの部分もリンクを付けてくださいり、ありがとうございました。
退会済みユーザー

退会済みユーザー

2018/07/26 00:11

セキュアに使おうと思ったら、データベース使うのさえしんどい時代の php ですからねぇ。 設計書でも残っているといいですね。
guest

0

「バックアップ環境」とあるので、メイン環境があるものと想定して回答します。

ただ、6月9日に最新サーバー環境への移行メンテナンスが
行われて、それ以降、文字化けが発生したため、PHPの
バージョンを変更したいと考えております。

他の方の回答にもあるように、PHPのバージョン変更は設定変更だけで完了するケースはあまり無く、ソースコードの変更も必要になるケースが殆どです。

徹底したテストとソースコードの改修が出来ない場合、バージョンアップは諦めて、設定だけメイン側の設定に合わせる形にするしかありません。

メイン側とバックアップ側でphpinfo()による設定値と差分を調査し、異なっている部分についてメインと同じになるように設定してみては如何でしょうか?

投稿2018/07/23 10:28

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

danchan

2018/07/25 23:39

ありがとうございます。ソースコードの変更やphpinfo()による調査の方法をご提示いただきありがとうございます。差分を調査してどのようにできるか検討して参ります。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問