LoginSignup
0
3

More than 3 years have passed since last update.

古いバージョンのPHP・Perlで構成されたシステムをWindows Server 2016 IISで動作させるメモ

Last updated at Posted at 2018-11-11

元環境
Windows Server 2003
IIS 5.0

新環境:
Windows Server 2016
IIS 10.0

下記バージョンを動作させたい:
php5.2.6nts

動作が確認できるまでに参考になったサイト:
IIS初期設定
http://www.mztm.jp/2017/10/12/windows10iisphp/
php.iniの設定
https://symfoware.blog.fc2.com/blog-entry-1077.html

PHP過去バージョンのダウンロード参考:
https://jmatsuzaki.com/archives/15515

今後の参考予定:
https://nasunoblog.blogspot.com/2010/03/php-iis75fastcgiphp.html
https://uzulla.hateblo.jp/entry/2013/08/16/010814
http://guitarfish.wazure.jp/index.php?IIS%E3%81%B8%E3%81%AEPHP%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95%28IIS7.5%20x%20PHP5.2.11%29
https://server-network-info.blogspot.com/2017/02/windows-server-2016-iis-100-php.html

MySQLのインストール
mysql-essential-5.0.27-win32.msi
MySQL移行はダンプで行う
移行元で実行:
mysqldump -h localhost -u root -p --default-character-set=utf8 データベース > d:\databaseMysql
移行先で実行:
mysql -h localhost -u root -p データベース < d:\databaseMysql

PHPからMySQLを接続テスト

PEARのインストール
http://shopyuta.com/archives/2014
https://so-zou.jp/web-app/tech/programming/php/library/pear/introduction/install.htm
PEARインストールできないとき
http://shopyuta.com/archives/2014

★PHP修正
■php.ini関連のエラー
・SQL接続コードでのエラー
https://www.javadrive.jp/php/mysql/index1.html
http://books-nekoya.jp/Programming/MySQL/php.html

・下記のコードでエラーが発生した。
mb_language("ja");
mb_internal_encoding("SJIS");
mb_http_input("SJIS");
mb_http_output("SJIS");
⇒日本語環境のエラー
https://webkaru.net/php/mbstring-php-ini/

■5.2.5 から 5.2.6 NFSにバージョンを変えた影響のせいか通常動作の挙動ではなかった。
下記作業で改善された

■parse_ini_fileを使っている元のiniファイルを修正
例)
smtmail = addmail = aaa@test.com

smtmail = aaa@test.com
addmail = aaa@test.com

■コード全体の修正
html内のPHP文字表示部分修正
value="<?= $_username ?>"
⇒ value="<?php echo $_username; ?>"

★Perl5.8.8の移行
・移行元のPerlフォルダをコピーしてくる。インストール不要。
・Pathを通す
・IISから.*cgi .*plのハンドラーマッピングに登録する
http://guu.fmp.jp/archives/5788
・この時点でPerl時点の動作は確認。
・HTTPエラー対応
「HTTP エラー 502.2 - Bad Gateway
指定された CGI アプリケーションは、正しく動作しませんでした。HTTP ヘッダーの完全なセットが返されませんでした。返されたヘッダーは "Can't locate ./get_form.txt in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at ・・・」
通知 ExecuteRequestHandler
モジュール CgiModule
エラー コード 0x00000002

・移行したPerlファイルのrequireでエラーコードが出ていたので、requireする直前に下記のコードを加えると動作

x.pl
if($0 =~ /^(.*[\\\/])/) {chdir($1);}
require 'xxx.pl';

★Hyper-Vテスト環境から本番環境への移行時の問題
チェックポイントなど作成したので、ファイルがバラバラになった。
単一ファイルからドライブの接続ができるようにチェックポイントを削除して、終了しておく。
https://uncle-atsushi.com/hyper-v_avhdx_delete

★新環境IISにSSL設定
https://www.ipentec.com/document/windows-windows-server-iis-setup-https-site

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3