IISでEC-CUBEを動かすのにつまずいたこと
いろいろあって、当Webサイトでパソコンと関係の無い商品を売り出すことになりました。
当方自社Webサーバーを運用しており、IISで公開しています。なので、無料でECサイトを簡単に構築できる(らしい)EC-CUBEをIISで動かすことにしました。
◆つまずき-その1 「インストール画面が表示されない」
原因から言うと、dataフォルダのパス指定が間違っていたことでした。
IISで仮想ディレクトリを設定し、EC-CUBEのインストール・ディレクトリをリンクしました。
元々インストール・ディレクトリの中にあるdataフォルダは、セキュリティを考えると、外部からアクセスできない場所にに置いた方が良いらしいので、IISの公開ディレクトリであるwwwrootの親ディレクトリであるinetpubの中に移動しました。
そして、htmlフォルダの中にあるdefine.phpの3行目で、htmlフォルダから見たdataフォルダの位置を相対パスで指定しましたが、これが間違いでした。
実際には、仮想ディレクトリの元フォルダであるwwwrootの親をたどらず、実ディレクトリの親をたどるから、dataフォルダが見つからず、エラーになっていたのです。
基本的な勘違いでした。
ということで、dataフォルダをhtmlフォルダの親階層に移動させ、パスを「../../data」としたら、無事インストール画面が表示されるようになりました。
◆つまずき-その2 「インストールの最終段階でサーバー・エラー」
最終段階はデータベースの構築なので、データベースを作成し直せばよいという情報があり、やりましたが、だめでした。
IISでPHPを動かす場合、IISの[モジュールマップの追加]で、「FastCgiModule」として「php-cgi.exe」を登録する必要があるのですが、このモジュールのタイムアウト・エラーが原因でした。
php-cgi.exeの設定項目の[アクティビティ タイムアウト]の値を600に設定したら、無事インストールが完了しました。
しょぼいCPUを使っているからでしょうか?(一応デュアルコアですが)
◆つまずき-その3 「商品画像が登録できない」
これが一番苦労しました。
画像のサイズがphp.iniの設定サイズを超えているからという情報と、画像の保存フォルダのセキュリティ権限の問題という情報が殆どでしたが、画像のサイズは小さく、権限を設定してもだめでした。
何日も先人の情報を検索し、最後に見つけたものが、EC-CUBEとは関係なく、IIS+PHPでファイルのアップロードができないという情報でした。
PHPは、ファイルのアップロード時にphp.iniの「HTTPアップロードファイルの一時ディレクトリ」指定項目のupload_tmp_dirで指定されたディレクトリに一時的に保存する仕様になっており、そのディレクトリにIISの匿名認証ユーザーであるIUSRの書き込み権限を与える必要があります。これを設定していなかったために、エラーになっていた訳です。
どうもIIS+PHP環境はいろいろ難しいようです。
この環境でのWEBの情報が少ないのも、こういう理由があるからかもしれません。
当方自社Webサーバーを運用しており、IISで公開しています。なので、無料でECサイトを簡単に構築できる(らしい)EC-CUBEをIISで動かすことにしました。
◆つまずき-その1 「インストール画面が表示されない」
原因から言うと、dataフォルダのパス指定が間違っていたことでした。
IISで仮想ディレクトリを設定し、EC-CUBEのインストール・ディレクトリをリンクしました。
元々インストール・ディレクトリの中にあるdataフォルダは、セキュリティを考えると、外部からアクセスできない場所にに置いた方が良いらしいので、IISの公開ディレクトリであるwwwrootの親ディレクトリであるinetpubの中に移動しました。
そして、htmlフォルダの中にあるdefine.phpの3行目で、htmlフォルダから見たdataフォルダの位置を相対パスで指定しましたが、これが間違いでした。
実際には、仮想ディレクトリの元フォルダであるwwwrootの親をたどらず、実ディレクトリの親をたどるから、dataフォルダが見つからず、エラーになっていたのです。
基本的な勘違いでした。
ということで、dataフォルダをhtmlフォルダの親階層に移動させ、パスを「../../data」としたら、無事インストール画面が表示されるようになりました。
◆つまずき-その2 「インストールの最終段階でサーバー・エラー」
最終段階はデータベースの構築なので、データベースを作成し直せばよいという情報があり、やりましたが、だめでした。
IISでPHPを動かす場合、IISの[モジュールマップの追加]で、「FastCgiModule」として「php-cgi.exe」を登録する必要があるのですが、このモジュールのタイムアウト・エラーが原因でした。
php-cgi.exeの設定項目の[アクティビティ タイムアウト]の値を600に設定したら、無事インストールが完了しました。
しょぼいCPUを使っているからでしょうか?(一応デュアルコアですが)
◆つまずき-その3 「商品画像が登録できない」
これが一番苦労しました。
画像のサイズがphp.iniの設定サイズを超えているからという情報と、画像の保存フォルダのセキュリティ権限の問題という情報が殆どでしたが、画像のサイズは小さく、権限を設定してもだめでした。
何日も先人の情報を検索し、最後に見つけたものが、EC-CUBEとは関係なく、IIS+PHPでファイルのアップロードができないという情報でした。
PHPは、ファイルのアップロード時にphp.iniの「HTTPアップロードファイルの一時ディレクトリ」指定項目のupload_tmp_dirで指定されたディレクトリに一時的に保存する仕様になっており、そのディレクトリにIISの匿名認証ユーザーであるIUSRの書き込み権限を与える必要があります。これを設定していなかったために、エラーになっていた訳です。
どうもIIS+PHP環境はいろいろ難しいようです。
この環境でのWEBの情報が少ないのも、こういう理由があるからかもしれません。
スポンサーサイト