- 投稿日:2019-10-20T21:08:18+09:00
【備忘録】DatePeriodクラスとforeachの関係性を理解する
目的
以下のコードを理解する。カレンダー機能の日付を作成しようとしている。
tdを作る<?php $body = ''; $period = new DatePeriod( new DateTime('first day of this month'), new DateInterval('P1D'), new DateTime('first day of next month') ); foreach ($period as $day) { $body .= sprintf('<td>%d</td>',$day->format('d')); } ?>参考資料
PHP公式ドキュメント
・DatePeriod クラス
・DateTime クラス
・DateInterval クラスDateTimeクラスとは
日付と時刻をあらわします。
相対的な書式を用いることで、ほしい日付情報が取れる。何もかかないと、現在の日付情報が取得できる。返り値は、連想配列である。
例1DateTime$datetime = new DateTime('first day of this month'); var_dump($datetime); $datetime1 = new DateTime(); var_dump($datetime1);DateTimeの出力//今月の月時刻 object(DateTime)#1 (3) { ["date"]=> string(26) "2019-10-01 01:31:24.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" } //現在の時刻 object(DateTime)#1 (3) { ["date"]=> string(26) "2019-10-20 01:35:11.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }DateIntervalとは
日付の間隔をあらわします。
格納方式は、固定値 (年、月、日、時など) あるいは相対時刻 (DateTime のコンストラクタがサポートしている書式) となります。
DateIntervalクラスを使用すると、返り値の要素に代入される値は、固定か、相対時刻ってことかな、、、
よくわからん
とりあえず、var_dumpしてみた
DateInterval$interval = new DateInterval('P1D'); var_dump($interval);DateInterval出力object(DateInterval)#1 (15) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(1) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) }
["d"]=>int(1)
と表示されるのは、引数にP1D
を記述して、1日間隔を指定したからだはず。ちなみに、引数に何も入れないとエラーになる
・・・こいつの使い方よくわからねー!!!
DatePeriodとは
こいつが、DateTimeとDateIntervalを繋げる役割してるのかな、、
日付の期間をあらわします。
日付の期間を使うと、指定した期間に定期的に発生する内容を反復処理できます。
反復処理
がよくわからないなー、ドキュメント読んでみると、
コンストラクターの書き方が3パターンあるみたいだけど、冒頭のコードは以下の書き方を適用しているDatePeriod引数public __construct ( DateTimeInterface $start , DateInterval $interval , DateTimeInterface $end [, int $options ] )DateTimeInterfaceってのは、型宣言?ことであり、これは、DateTimeInterfaceクラスが関係しているものじゃないと、引数に代入できないですよ〜って意味。
ちなみに、DateTimeクラスのコードを見てみると、
implements
でDateTimeInterface
を継承しており、すでに型宣言されている ため,DatePeriod
の引数に使用できる冒頭に記述したDatePeriodを出力してみると、
以下のようになるDatePeriodクラス$period = new DatePeriod( new DateTime('first day of this month'), new DateInterval('P1D'), new DateTime('first day of next month') ); var_dump($period);DatePeriod出力object(DatePeriod)#1 (6) { :-- ["start"]=> object(DateTime)#2 (3) { ["date"]=> string(26) "2019-10-01 09:58:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" } ["current"]=> NULL ["end"]=> object(DateTime)#3 (3) { ["date"]=> string(26) "2019-11-01 09:58:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" } ["interval"]=> object(DateInterval)#4 (15) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(1) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) } ["recurrences"]=> int(1) ["include_start_date"]=> bool(true) }返り値は、連想配列であり、引数に代入したクラスは、以下のキーとペアになっている
[start] => new DateTime('first day of this month') [interval] => new DateInterval('P1D') [end] => new DateTime('first day of next month')foreachとDateperiodについて
Dateperiodをforeachで出力すると、以下の結果になる
Dateperiodをforeahで出力$period = new DatePeriod( new DateTime('first day of this month'), new DateInterval('P1D'), new DateTime('first day of next month') ); foreach ($period as $day) { var_dump($day); }var_dump($day)の出力object(DateTime)#3 (3) { ["date"]=> string(26) "2019-10-01 19:42:43.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" } object(DateTime)#4 (3) { ["date"]=> string(26) "2019-10-02 19:42:43.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" } ・ ・ ・ ・ object(DateTime)#4 (3) { ["date"]=> string(26) "2019-10-30 20:56:25.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" } object(DateTime)#3 (3) { ["date"]=> string(26) "2019-10-31 20:56:25.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }DateTimeの返り値と同じような構造で、月初から月末までの日付情報を1日間隔で出力する
みたいだけど、ピンとこない
DatePeriodの返り値は、
[start],[end],[interval],[その他]なのに、
なんでforeachしただけで、DateTimeみたいな返り値がきれいに出力されるんだ?????????Why Dateperiod ???????(厚切りアベ茶)
foreach理解してないからかなーーー
foreach嫌いだわーーーまとめ
foreach嫌い!!!
- 投稿日:2019-10-20T20:59:27+09:00
【WordPress、PHP、SQL文】Webデザイナーでもわかるサーバサイドの基本まとめ!(6記事)
HTML、CSS、JSなど静的ページを作り慣れているWebデザイナーがサーバサイドはどんなことができるのか?についてWordPressを通じて体験してみよう!という記事を書きました。下記にまとめます。
サーバサイドの中でのWordPressの位置付け
まずは大枠から、サーバサイドを構成するプログラミング言語とデータベース言語。そしてサーバサイドの中でのWordPressの位置付けを解説。
PHPの基本を理解するためにJSと比較する
WordPressのコードはPHPで書かれているので、PHPを読み書きする必要がある。JSの書式と比較しながら理解する。
ざっくりWordPress:PHP書式とテンプレートタグの識別-前編
WordPressサイトからダウンロードできるファイル一式の構成。index.phpのコード、WordPressのテンプレートタグ、インクルードタグ、そしてWordPressループについて解説。
※参考:ざっくりWordPress:PHP書式とテンプレートタグの識別-前編
ざっくりWordPress:PHP書式とテンプレートタグの識別-後編
content.phpのコード、投稿のテンプレートタグ、header.php、footer.phpの必須タグ、functions.phpのテーマ独自タグ、プラグインのメソッドについて解説。
※参考:ざっくりWordPress:PHP書式とテンプレートタグの識別-後編
SQL文はLocal by FlywheelのAdminerから慣れよう(WordPressのDB操作:その1)
WordPressとMySQLの関係、WordPressのローカル環境「Local by Flywheel」、DBにアクセスするAdminer、WordPressのDBのダンプ(sql)ファイル、そしてSQL文の三種類(DDL、DML、DCL)について解説。
※参考:SQL文はLocal by FlywheelのAdminerから慣れよう(WordPressのDB操作:その1)
AdminerからSQL文で「我輩は猫である」を「犬」にしてみる(WordPressのDB操作:その2)
Adminerの4つのメニュー、SQL command:SQL文入力、Import:ダンプファイルインポートとExport:ダンプファイルエクスポート、Create table:新規テーブル追加、WordPressのテーブル構成、「wp_posts」は投稿データのテーブルを解説。
「我輩は猫である」を投稿すして、SQL文で「我輩」を「犬」にする!
SQL文(DDL、DML、DCL)、DMLの基本命令(SELECT文、INSERT文、UPDATE文、DELETE文)の解説。
「SELECT文」で「猫」を検索、「UPDATE文」で「猫」を犬にする、「INSERT文」と「DELETE文」は投稿自体の追加、削除。
- 投稿日:2019-10-20T19:57:34+09:00
LaravelでリダイレクトテストするとルートURLが返ってきてしまう
Laravel で、
->assertredirect()
を使ってPOST後に指定したページにリダイレクトできているかテストしようとした。
画面上では問題なく動作するのに、テストでは想定外のURLにリダイレクトしてしまう現象が起こり、少しハマった。環境
Laravel 6.2.0
うまくいかなかったテスト
記事を投稿をするテスト
public function testCreatePost() { $response = $this ->post('post/create', [ 'title' => 'sample title' 'text' => 'sample text' ]) $response->assertRedirect('posts'); }テスト結果
There was 1 failure: 1) Tests\Feature\Owner\IncentivesControllerTest::testRedirect Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'https://localhost/posts' +'https://localhost'画面上の動作でははちゃんと
/posts
にリダイレクトされてるのに、なぜルートURLに飛ばされることになってる??原因
リダイレクトテストをしたとき、
back()
で前の画面に戻されるが、テストの仕様上、前の画面は保存されていない。
よって、ルートURLのhttps://localhost
が返されてしまう。対策
->from()
で前の画面を指定(リファラーを定義)する必要があった。public function testCreatePost() { $response = $this ->from('posts') //追加 ->post('post/create', [ 'title' => 'sample title' 'text' => 'sample text' ]) $response->assertRedirect('posts'); }これでうまくテストが通った!
- 投稿日:2019-10-20T12:38:41+09:00
2020年に開催される全国のPHPカンファレンスのまとめ
2020年に開催される全国のPHPカンファレンスのまとめ
PHPerKaigi 2020
- 開催日 : 2020年2月9日(日)~2月11日(火)
- 開催場所 : 練馬区立区民・産業プラザ Coconeri ホール
- Twitter : https://twitter.com/phperkaigi
- ハッシュタグ : #phperkaigi
は、はやい…!
— PHPerKaigi 2020 @2/9-2/11 (@phperkaigi) September 11, 2019
2020のスポンサー募集のメールを2019のスポンサーのみなさまにお送りして38分後にはお申込が…!
今年の(も)一番乗りは
スタジオ・アルカナさまでした!
そして何と1分差でハートビーツさまからもお申込を…!
ありがとうございます!#phperkaigiLaravel JP Conference 2020
- 開催日 : 2020年3月21日(土)
- 開催場所 : グランパークカンファレンス
- Twitter : https://twitter.com/laraveljpcon
- ハッシュタグ : #laraveljpcon
Laravel JP Conference 2020 ほぼやるので予定空けといてください!2020/03/21!! #LaravelTokyo
— 青ごへいもち (@blue_goheimochi) May 22, 2019Laravel JP Conference 2020のティザーサイトが公開されました!https://t.co/45v8obXCvB
— LaravelJPConference (@laraveljpcon) June 28, 2019
スポンサー申込みなどはもうしばらくお待ちください!#laraveljpconPHPカンファレンス仙台2020
- 開催日 : 未定
- 開催場所 : 未定
- Twitter : https://twitter.com/phpcon_sendai
- ハッシュタグ : #phpconsen
実行委員で飲み会してた結果、来年PHPカンファレンス仙台2020の開催がなんとなく決まりました!時期詳細は未定です!オリンピックとかぶらないようがんばります! #phpconsen
— PHPカンファレンス仙台 (@phpcon_sendai) July 9, 2019
PHPカンファレンス仙台2020、やります。詳細未定。2019個人的振り返りはこちら。#phpconsenhttps://t.co/lSrGT361bE
— Shu Sawada (さわだしゅう) (@bokusama) July 9, 2019PHPカンファレンス福岡 2020
- 開催日 : 2020年7月11日(土)
- 開催場所 : 福岡ファッションビル FFB HALL
- Twitter : https://twitter.com/phpcon_fukuoka
- ハッシュタグ : #phpconfuk
昨日のPHPカンファレンス沖縄の会場にて発表しましたが「PHPカンファレンス福岡2020」は2020年7月11日(土)に開催が決定しました? 場所はおなじみのFFBホールで、実行委員長は .@seike460 が務めます。みなさん来年の7月11日の予定はあけておいてくださいねー!? #phpconfuk
— PHPカンファレンス福岡2019@6/29 (@phpcon_fukuoka) October 13, 2019関西?
PHP CONFERENCE KANSAI 2020 KICKOFF を公開しました! https://t.co/gNDcxzd3UF #phpkansai
— mikakane (@_mikakane) October 17, 2019沖縄?
フロントエンドカンファレンスって沖縄でも開催しても良いのかな??
— カンボ?沖縄@Webエンジニア (@kanbo0605) September 4, 2019
大丈夫なら来年は、PHPカンファレンス沖縄と二つ開催しようかな北海道?
今年PHPカンファレンス北海道をやったあの会場は大人気すぎて、来年の週末はまったくとれそうにありません! #phpcondo #phpconokinawa
— マキ (@makies) October 12, 2019名古屋?
来年は名古屋も……! https://t.co/BSqhWtvxZz
— 瀬戸@岐阜駅ビル使って下さい (@setoshi66) September 1, 2019過去のPHPカンファレンスまとめ
- 投稿日:2019-10-20T08:47:05+09:00
Moodle-3.7 マニュアル - PostgreSQL
PostgreSQL は、Moodle がフルサポートするデータベースです。どんな Moodle のインストールにもデータベールは必須です。
内容
1 Moodle データベースの作成
2 文字コードの設定と照合
3 クライアント認証
4 参照1 Moodle データベースの作成
These instructions assume that the database server and web server are on the same machine. If that is not the case you have some more work to do. See the PostgreSQL documentation for further details.
Log into the PostgreSQL command line client. The exact form depends on how your PostgreSQL is configured but will be something like
$ psql -U postgres
Password for user postgres:Enter the password for your 'postgres' user set during installation. After some preamble you should see the prompt postgres=#.
Create the user for the Moodle database and assign a password:
postgres=# CREATE USER moodleuser WITH PASSWORD 'yourpassword';
Provide a suitably strong password. Please note that the actual authentication method depends on your PostgreSQL server's pg_hba.conf file. Some authentication methods (like ident) do not require the password. See the 'Client Authentication' section below for further details.
Create the database:
postgres=# CREATE DATABASE moodle WITH OWNER moodleuser;
2 文字コードの設定と照合
If the PostgreSQL server's default collation does not suit your needs, you can provide explicit LC_CTYPE (character classification) and LC_COLLATE (string sort order) setting for your Moodle database. The following example creates new database called 'moodle' optimised for a Czech Moodle site:
postgres=# CREATE DATABASE moodle WITH OWNER moodleuser ENCODING 'UTF8' LC_COLLATE='cs_CZ.utf8' LC_CTYPE='cs_CZ.utf8' TEMPLATE=template0;
For more details refer to Character Set Support chapter in PostgreSQL manual.
To make sure the database was created correctly, use the \l at the psql console or execute psql -l shell command. You should get something like
postgres=# \l
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
-----------+------------+----------+-------------+-------------+-----------------------
moodle | moodleuser | UTF8 | cs_CZ.utf8 | cs_CZ.utf8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postgres3 クライアント認証
Client Authentication is how PostgreSQL decides which user accounts can connect to which databases from which hosts. PostgreSQL handles this in a very different way to MySQL, and this is a potential pitfall for system administrators who are used to MySQL and now find themselves setting up a PostgreSQL server.
If you've followed the instructions above, but find that Moodle just won't connect to your database and gives an 'Ident authentication failed' error, you should check your client authentication file.
In MySQL, access is controlled when user accounts are created or granted privileges on databases, by using the 'moodleuser'@'servername' syntax. PostgreSQL uses a client authentication file called 'pg_hba.conf' in PostgreSQL's 'data' folder. In this file, you'll find a list of which users are allowed to connect to which databases, the IP addresses they are allowed to connect from, and the authentication methods they can use to connect.
In the client authentication file, you'll find the following line (starting with a '#' sign), which tells you the order to add each piece of data. To grant permission for Moodle to connect to a PostgreSQL server on the same machine, just add the following line, changing the DATABASE and USER columns to your actual database name and the username you set up above. The METHOD field should say "password" - don't put your actual password here.
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host moodle moodleuser 127.0.0.1/32 passwordIf your database lives on a separate server from your Moodle installation, you can change the IP address above to match. In this case, it is recommended to not use 'password' in the method field unless the connection between the two servers is secure, as 'password' sends the password in plain text. In these circumstances, you should consider changing METHOD to 'md5' instead.
Once the Client Authentication file has been changed, you will need to restart the PostgreSQL service.
4 参照
PostgreSQL home page
Tuning Your PostgreSQL Server
Arguments in favour of PostgreSQL
PostgreSQL - Wikipedia
MDL-55124 - Support for connection pooler (pgbouncer) in PostgreSQL connection in Moodle 3.2 onwards
- 投稿日:2019-10-20T08:46:38+09:00
Moodle-3.7 マニュアル - インストール方法
インストール方法
以下の日本語訳となります。
https://docs.moodle.org/37/en/Installation真新しい Moodle サイトをインストールするなら、ここから
Moodle-3.7 マニュアル-クイックガイド -エキスパートや時間のない人向け
Moodle-3.7 マニュアル Moodle インストール - 上記以外の方向け
Cron
'Installing plugins'(翻訳準備中)
'Installation FAQ'(翻訳準備中)アップグレード方法
あなたの Moodle サイトをアップグレードするなら、ここから
'Upgrading'(翻訳準備中)
'Upgrade overview'(翻訳準備中)
'Git guide'(翻訳準備中)
'Administration via command line'(翻訳準備中)
'Upgrading FAQ'(翻訳準備中)参照
'MoodleCloud - free hosting from Moodle HQ'(翻訳準備中)
'Automatic updates deployment'(翻訳準備中)
'Moodle migration'(翻訳準備中)
- 投稿日:2019-10-20T08:46:10+09:00
Moodle-3.7 マニュアル-クイックガイド
このページは、web サーバアプリケーションのインストールの経験のある管理者が速攻インストールすることを対象にしています。そうでなければ、Moodle-3.7 マニュアル - Moodleのインストールを読んでください。
内容
1 基本要件
2 Moodle の入手
3 データベースの作成
4 データディレクトリの作成
5 Moodle コードのインストール
6 Moodle の設定
7 Moodle のインストール
8 cron 設定1 基本要件
web サーバ(例えば、Apache)、データベース(例えば、MySQL, MariaDB あるいは PostgreSQL)が必要となり、PHP が設定されている必要があります。ソフトウェア要件については、dev docs を参照してください。
Moodle は、いくつかの PHP extension を必要とします。しかしながら、Moodle は、インストールプロセスの途中でそれをチェックするため、何か問題があっても、問題を解決してインストールスクリプトを再スタートすることにより、解決できます。
もし、Moodle からメールを送信したい(おそらくしたいでしょうが)のなら、Sendmail (Unix/Linuxでは)が稼働しているか、SMTP メールサーバにアクセスできることが必要です。2 Moodle の入手
2つの基本オプションがあります。
- http://moodle.org/downloads から、必要とするバージョンをダウンロードすること、または
- Git リポジトリからコードを pull すること(コードのアップグレードが簡単にできるために開発者にオススメです)
git clone -b MOODLE_36_STABLE git://git.moodle.org/moodle.git上記コマンドは、Moodle リポジトリの完全なコピーを得、3.7 の stable branch にスイッチします。
Moodle コードを、Git を使ってインストールするには、Git for Administrator を見てください。
注: Moodle は、moodle.org のソースからダウンロードしてください。他のバージョン(コントロールパネルベースのインストーラ、Linux ディストリビューションリポジトリ、あるいは、他の 'ワンクリック' インストーラ等)は、正しく動作する事や、アップグレードやサポートも保証されません。
3 データベースの作成
あながた選択したデータベースサーバを使用して、空のデータベースを作成してください。デフォルトのエンコーディングは、UTF8
となります。MySQLを使用するなら、CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;user/password のペアを、データベースのために適切なパーミッションで作成します。もし MySQL を使用するなら、
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'yourpassword';注: GRANT ON moodle.* は、重要です。というのも、データベース名が '.*' を含んでおり、単なるデータベース名ではないためです。このパスワードを Moodle user のために保存してください、インストールの工程で必要になります。
4 データディレクトリの作成
Moodle ファイル群を入れるための、空のディレクトリを作成してください。web サーバの領域と同じであってはいけません。また、web サーバユーザが、書き込み権限を持っていなければいけません。それ以外では、どこであってもよいです。典型的には、web サーバユーザの所有にするが、誰でも書き込みできるようにするかです。もし、shared/NFS ドライブであるのなら、Caching が読める様にしてください。Moodle は、デフォルトでこのディスクにキャッシュしまので、遅い share は、パフォーマンスを大変損ないます。
5 Moodle コードのインストール
zip あるいは tgz ファイルを事前にダウンロードしているのなら、unzip/untar し、Moodle コードを移動/コピーします。このことにより、web サーバ(一例:Debian ベースの Linux であれば、/var/www/html/moodle)により配信されます。
パーミッションをチェックし、web サーバが どんな Moodle コードディレクトリにも書き込み権限を持っていないことを確かめて(サイトが乗っ取られる真因の典型)ください。
必要であるなら、Moodle サイトを選択した URL に設定してください。6 Moodle の設定
Moodle コードディレクトリにおいて、config-dist.php を見つけ、config.php という名前にリネーム(しかし、次のステップ'Moodle のインストール' をまず読んでください)してください。
config.php をお気に入りのエディタで編集し、自分のサイト、ディレクトリ、データベースを指し示すように、設定を適切にしてください。
注:Moodle のインストールスクリプトは、もし、config.php が存在しない場合に config.php を作成します。しかしながら、後に、パーミッションを(再)設定することを確実におこなってください。7 Moodle のインストール
moodle サイトにブラウザで行く、 (インストールは自動で終了します) または、以下のコマンドラインバージョンを実行します (PHP の cli が必要となります):
/usr/bin/php /path/to/moodle/admin/cli/install.phpCLI は、config.php を作成し、前のステップで実行しているばあいは作成しません。
インストールが終了したら、Moodle プログラムファイル (web server から書き込まれない)と、Moodle データファイル (web server が書き込める) にとってファイルのパーミッションが適切であることを確かめてください。
8 cron 設定
cron ジョブを定期的に動作させる必要があります。cron は、毎分実行させるのが推奨されます。これは、recycle bin を使用している場合、非同期アクティビティによる削除に必要とされるためです。
典型的な Unix の cron エントリの一例は、以下となります。* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/nullあなたのサイトは、cron が定期的に動作するまでは、うまく動かないでしょう。このステップをスキップするべきではありません。
詳細は、Cron を参照してください。おめでとうございます!
Moodle サイトを使う準備ができました。
問題があれば、インストールFAQ(https://docs.moodle.org/37/en/Installation_FAQ) をチェックし、インストールヘルプフォーラム(http://moodle.org/mod/forum/view.php?id=28)を見てください。カテゴリ:インストール
- 投稿日:2019-10-20T08:45:45+09:00
Moodle-3.7 マニュアル Moodle インストール
以下の日本語訳となります。
https://docs.moodle.org/37/en/Installing_Moodle全体を確認したい人はこちらから
Moodle-3.7 マニュアル - インストール方法このページは、Moodle のインストールについて説明するものです。あなたがエキスパートであり、急いでいるのなら、Moodle-3.7 マニュアル-クイックガイド を読んでください。
もし Moodle をスタンドアロンマシンで試したいだけなら、Windows 用の 'ワンクリック' インストーラ リンク:Complete install packages for Windows(https://docs.moodle.org/37/en/Complete_install_packages_for_Windows) や、Complete Install Packages for Mac OS X(https://docs.moodle.org/37/en/Complete_Install_Packages_for_Mac_OS_X) や install on OS X (https://docs.moodle.org/37/en/install_on_OS_X) があります。この記事は、本番レベルのサーバ用となります。
内容
1 要件
1.1 ハードウェア
1.2 ソフトウェア
2 サーバのセットアップ
3 所定の場所にファイルをダウンロードしコピーする
4 空のデータベースの作成
5 データ(moodledata)ディレクトリの作成
5.1 web ディレクトリの moodledata をセキュアに保つ
6 Moodle のインストールを開始する
6.1 コマンドラインインストーラ
6.2 web ベースのインストーラ
7 最後の設定
7.1 Moodle 内の設定
7.2 残りのタスク
7.3 インストールの終了
7.4 問題が生起した場合
8 プラットフォーム特有の対処法
9 参照1 要件
Moodle は、主に Linux 上で、Apache, PostgreSQL/MySQL/MariaDB and PHP (しばしば LAMP プラットフォームと呼ばれます。) を使用して開発されています。これらの環境で動作するのが典型となります。しかしながら、リリースのソルトウェアの要件が合致すれば、その他のオプションもあります。
Windows サーバに Moodle をインストールするのなら、php5.5 以降、以下のサイトから、Visual C++ Redistributable for Visual Studio 2012 をインストールする必要があります。
http://www.microsoft.com/en-us/download/details.aspx?id=30679Moodle の基本的な要件は、以下となります。
1.1 ハードウェア
- ディスク容量: Moodle コードのために 200MB、加えて、コンテンツの保存容量。5GB 以上がおそらく望ましい最低限の値です。
- プロセッサ: 1GHz (最低でも)、2GHz デュアルコアあるいはそれ以上が推奨されます。
- メモリ:512MB (最低でも)、1GB あるいはそれ以上が推奨されます。本番サーバにおいては、8GB 以上が望ましいです。
- フロントエンドサーバと、データベースサーバを分けることを考慮してください。チューニングが容易となります。
上記の要件は、特定のハードウェアとソフトウェアの組み合わせや使用方法やロードの程度により変化します。ビジーなサイトは追加のリソースが必要となります。これ以上のガイダンスは、'performance recommendations' (翻訳準備中) にあります。Moodle は、ハードウェアを増やすことにより、容易にスケールアップできます。
巨大なサイトのために、小さなパイロットサイトを作り、経験と知見を得る事がいいでしょう。「50,000 人のユーザのためには、どれくらいのハードウェアが必要か」というスタイルには、このサイトでは有益な回答は得られないでしょう。
1.2 ソフトウェア
'dev docs for software requirements' (翻訳準備中)のリリースノートを参照してください。
2 サーバのセットアップ
ユースケースは、デスクトップ PC(例えば、テストと評価のために)から、ラックマウントあるいはクラスターソリューションまであります。上記のとおり、基本サーバソフトウェアをインストールするには可能性が多いので、Installing AMP, IIS, Nginx にあるリンク等を参照してください。
上記を参照することは、デプロイの選択にかかわらず、ソフトウェアスタックの異なる部分(HTTP デーモン、データベース、PHP その他等)の設定を理解する時間がかかっても、大変有益であると考えます。Moodle に最適な標準的なサーバの設定というものを期待しないでください。例えば、web サーバとデータベースサーバは、Moodle の能力を最大限に発揮させるためには、常にチューニングされているべきです。
ホスティングプロバイダを利用するつもりなら、インストールする前に、ホスティングのプラットフォームで、全ての Moodl の要件(PHP のバージョン等)が満たされているかを確認してください。ホスティングプロバイダのプラットフォーム上では、オプションやツールがことなるために、設定を変更(例えば、PHP ファイルのアップロードサイズの上限)するのに役立つでしょう。
3 所定の場所にファイルをダウンロードしコピーする
重要:Moodle コードを入手する場所は複数あります(Moodle インストーラーを含む)が、moodle.org から入手するとが強く推奨されます。問題が発生した時に、サポートが非常に容易になります。
2つのオプションがあります。
http://moodle.org/downloads から必要なバージョンをダウンロードし、unzip/unpack する。
または、Git リポジトリからコードを pull (開発者にはこれを推奨、またアップグレードも非常に容易となります)する。$ git clone -b MOODLE_{{Version3}}_STABLE git://git.moodle.org/moodle.gitその他考考慮すべきオプションには、以下があります。
--depth=1 は、最新のリビジョン(のみ)の shallow cloning をおこないます。(注意してください!あなたが管理者であるなら、このフィーチャーが使われた場合、これ以降 git によるアップデートと変更が簡単にできなくなります)。
--single-branch は、クローンを単一ブランチのみに限定します。これは、Moodle 3.7 Stable branch (latest weekly build) をクローンします。詳細は、'Git for Administrators' (翻訳準備中) を参照してください。
上記のうちどちらも、ファイルおよびディレクトリが含まれた moodle というディレクトリが作成されます。
いつもどおりに、全てのフォルダを web サーバのドキュメントディレクトリに配置することができます。この場合、サイトは、http://yourwebserver.com/moodle になります。また、web サーバのドキュメントディレクトリに直接コピーすることもできます。この場合、サイトは単に、http://yourwebserver.com となります。確証が持てないのなら、あなたのシステムあるいは web のドキュメントを確認してください。
こつ: Moodle をローカルマシンにダウンロードして web ホストサイトにアップロードするのなら、圧縮ファイルをアップロードしてアップロード先(あなたの「ファイルマネージャ」をチェックしてください)で解凍してください。それが出来ない時は、FTP の進行状況を注視し、エラーが発生していないか、失われたファイルがないかを確認してください。
Moodle ファイルをセキュアに保ってください。ファイルは、web サーバユーザーから書き込めないようにしなければいけません。例えば、Unix/Linux では、(root ユーザになり)
# chown -R root /path/to/moodle # chmod -R 0755 /path/to/moodle # find /path/to/moodle -type f -exec chmod 0644 {} \;(ファイルは、administrator/superuser のみが所有者であるべきで書き込み権限を持つ - それ以外からは、読み込み権限があるのみ)
3番目のコマンドは、通常ファイルと実行権限のあるファイルについて、chmod 0644 実行し、表示しています。
ビルトインプラグインインストーラを使いたい場合は、web サーバーユーザが書き込むことのできるディレクトリを作成する必要があります。サーバが ACL をサポートしているのなら、ACL を使用する事が強く推奨されます。例えば、Apache サーバーが www-data というアカウントを使用している場合等。
# chmod -R +a "www-data allow read,delete,write,append,file_inherit,directory_inherit" /path/to/moodle上記コマンドの効果は、Apache ユーザーアカウント(この場合は、www-data)に、moodle サイトでのアクセスと変更権を与えることを許可するものです。サイト管理者がおこなうには勇気がいると考える人もいるでしょう。あたらしい moodle では、このような意見を無視できます。Ubuntu のデフォルトインストールでは、chmod コマンドには +a オプションがそもそもないのです。+a 属性は、ACL (Acsess Control List)機能であり、ファイル単位で、ユーザ毎のアクセスを可能にします。例えば、OSX では、これはデフォルトです。
4 空のデータベースの作成
次に、あたらしい、空のデータベースを作成します。インストールの最終ステージにおいて、以下のような情報が注意表示されます。
dbhostデータベースサーバのホスト名であり、データベースサーバと web サーバが同一であれば、おそらく localhost となり、そうでなければ、データベースサーバの名前になる。
dbnameデータベースの名前。命名は自由、一例:moodle
dbuserデータベースのユーザ名。命名は自由、一例:moodleuser。root/superuser アカウントを指定しないこと。最小限のパーミッションしか与えられないようなアカウントの適切なユーザを作成すること。
dbpass上記ユーザのパスワード
もし、ホストされたサーバ上であるなら、コントロールパネル(管理者に確認してください)の一部に、web ベースの、データベース用の管理者ページがあるはずです。その他の方や、詳細な説明が必要な場合は、データベースサーバのページを参照してください。
PostgreSQL(推奨)
MariaDB(推奨)
MySQL
MSSQL
Oracle(非推奨)5 データ(moodledata)ディレクトリの作成
Moodle には、全てのファイルを保存するディレクトリが必要です(サイトにアップロードされるファイル、テンポラリなデータ、キャッシュ、セッションデータ、その他)。web サーバは、このディレクトリに書き込むことができる必要があります。大きなシステムでは、このディレクトリにどれぐらいのスペースを割り当てるか考慮してください。
デフォルトでは、Moodle は、データをキャッシュしますが、ストレージの性能が悪い(例えば、NFS である等)と、パフォーマンスがとても悪くなります。'Caching'(翻訳準備中)のために、'Performance_recommendations'(翻訳準備中) を読んで、redis または memcached を使うことを検討してください。
重要:このディレクトリは、web から直接アクセス可能であってはいけません。これは、深刻なセキュリティホールとなります。web root や、Moodle プログラムディレクトリの中に置かないようにしてください。Moodle はインストールを拒否します。Moodle ディレクトリ以外の便利な場所においてください。
以下は、その場所に、サーバの誰もが書き込めるパーミッションを設定する一例(Unix/Linux)となります。これは、Moodle サーバが共有されていない場合にのみ適切な設定となります。サーバー管理者と、web サーバユーザのみがこれらのファイルにアクセスするようなよりよいパーミッションを設定するように話し合ってください。
# mkdir /path/to/moodledata # chmod 0777 /path/to/moodledataサーバが ACL をサポートしているのなら、次のパーミッションを設定することを推奨します。例えば、Apache のユーザーアカウントがwww-data であるなら、
# chmod -R +a "www-data allow read,delete,write,append,file_inherit,directory_inherit" /path/to/moodledataコマンドラインから PHP スクリプトを実行することを考えているなら、同じパーミッションを現在のユーザにも設定するべきです。
$ sudo chmod -R +a "`whoami` allow read,delete,write,append,file_inherit,directory_inherit" /path/to/moodledata5.1 web ディレクトリの moodledata をセキュアに保つ
ホストされたサイトを使用中であり、'moodledata' を web アクセス可能なディレクトリに置くしか選択肢がない場合は、.htaccess ファイルを 'moodledata' ディレクトリに設置したほうがいいでしょう。これは全てのシステムで有効なわけではないので、あなたのサイトのホストあるいは管理者に相談してください。.htaccess の内容は以下のようになります。
order deny,allow deny from all6 Moodle のインストールを開始する
インストーラを走らせて、データベーステーブルを作成し、あなたのあらたなサイトを設定する時です。推奨メソッドは、コマンドラインインストーラを使用することです。何らかの理由でこれが使用できない場合(例えば、Windows サーバであるため等)は、web ベースのインストーラが利用可能です。
6.1 コマンドラインインストーラ
システムの web ユーザにおいて、コマンドを発行するのが最適ですが、その意味を理解する必要があります。システムのドキュメントを確認してください(一例:Ubuntu/Debian では 'www-data', Centos では 'apache' です)。
コマンドラインの一例となります (root で実行します - 'www-data' を、自分の環境上の web ユーザに当てはめてください):
# chown www-data /path/to/moodle # cd /path/to/moodle/admin/cli # sudo -u www-data /usr/bin/php install.php # chown -R root /path/to/moodlechown コマンドは、スクリプトが config.php をあらたに作成することを可能にします。以下のコマンドで詳細な情報を確認できます。
# php install.php --helpこのページで論じていない、その他の設定を聞かれます - わからなければ、デフォルトのままにしてください。この件の詳細は、'administration via command line'(翻訳準備中) を参照してください。
6.2 web ベースのインストーラ
簡単にことを済ますには、web から Moodle をインストールすることができます。インストールが完了するまでは、全世界からアクセスできないように設定することを推奨します。
インストーラースクリプトを実行するには、Moodle のメイン URL に web ブラウザで行ってください。
インストールプロセスは、いくつかのページを経ます。著作権、データべースのテーブル作成や、管理者のアカウントの詳細や、公開するサイトの詳細が質問されます。データベースの作成には多少時間がかかります(我慢強く待ちましょう)。しばらくして、Moodle のフロントページで、新しいコースを作成する表示が出力されます。
あたらしい config.php をダウンロードし、Moodle をインストールした場所にアップロードするように聞かれると思います。スクリーンに出た指示にしたがってください。
7 最後の設定
7.1 Moodle 内の設定
Moodle サイトの管理者画面には、いくつかのオプションがあります('Administration' ブロックの 'Site administration' タブからアクセス可能です)。
以下、チェックした方がよい項目を列挙します。Administration > Site administration > Plugins > Message Outputs > Email:
Moodle サイトが email を送信できるように、smtp サーバと、必要であれば認証を設定します。サイトの The support contact もこのページで設定します。Administration > Site administration > Server > System paths:
Set the paths to du, dot and aspell binaries.
Administration > Site administration > Server > HTTP:
ファイアウォールの背後にいるのなら、'web proxy' セクションで、proxy credential を設定する必要があります。Administration > Site administration > Location > Update timezones:
タイムゾーン情報が最新になるように実行します。
php.ini において、サーバーのローカルタイムゾーンを設定します(OS によって、/etc/php.ini または /etc/php.d/date.ini の場合があります)。[Date] ; Defines the default timezone used by the date functions date.timezone = "YOUR LOCAL TIMEZONE"7.2 残りのタスク
Cron の設定:
Moodle のバックグラウンドのタスク(フォーラムの email を送信したり、コースバックアップを採取する等)は、ある時刻に実行されるスクリプトにより実現されます。
Cron instructionsを参照してください.バックアップの設定: 'Site backup'(翻訳準備中)および 'Automated course backup'(翻訳準備中)を参照。
Moodle site をセキュアに保つ: 'Security recommendations'(翻訳準備中)を参照
最大アップロードサイズを増やすには、'Installation FAQ Maximum upload file size - how to change it?'(翻訳準備中)を参照。
Check mail works (New in 3.7): From Site administration > Server > Test outgoing mail configuration, use the link to send yourself a test email. Don't be tempted to skip this step.7.3 インストールの終了
新しいコースを作成します。web ブラウザの Moodle (インストールプロセスで設定した同じ URL を使用して)を通して、admin ユーザにログインし、新しいコースを作成します。'create a new course' (翻訳準備中) を参照のこと。
7.4 問題が生起した場合
Here are some things you should try...
'Installation FAQ'(翻訳準備中)をチェックしてください。
ファイルのパーミッションを注意深くチェックしてください。web サーバは、Moodle プログラムファイルを読む(ただし、書けないこと)ことができますか? web サーバは、Moodle データディレクトリの読み書きができますか? もし、OS 上のファイル所有権とパーミッションについて理解できていないのなら、このタイミングできちんと理解しましょう。
データベースの権限をチェックしてください。設定で、データベースユーザを正しい権限とパーミッションで設定(特に、web サーバーと出たベースサーバーが異なるマシンにある場合)しましたか?
config.php を手動で作成してください。config-dist.php(Moodle プログラムのルートディレクトリにあります)を config.php としてコピーしてください。編集し、database/site オプションを設定します。インストールは、正しい場所から継続されます。
前述のとおりに config.php を作成すれば、デバッグモード(8項 参照)にすることができます。これにより、問題を特定できるでしょう。
web サーバのエラーログにアクセスできるなら、チェックしてみてください。php.ini / .htaccess の設定を再度チェックしてください。適切に設定(メモリの上限値等)されていますか? 正しい php.ini / .htaccess を編集し、設定変更後、(必要であれば)web サーバーを再起動しましたたか?
インストールスクリプトをスタートする前に、コアではない(オプション)プラグイン、テーマあるいはの他のコードをを読み込んでいますか? もしそうなら、それらを削除して、再度試してみて(それらは壊れているか、適合していません)ください。
Installation problems forum で、あなたの問題を説明してください。ソフトウェアのバージョンを告げることを忘れずに。何をして、何が起こり、確認したエラーメッセージ(があったなら)を説明し、試したことを説明してください。'何もない' ということはないと思います。真っ白なページも、何かであることは確かです!8 プラットフォーム特有の対処法
注: ほとんどの情報は、コミュニティからもたらされます。未チェックであったり、古いものも含まれます。上記インストールの手引きとともに読んでください。
Windows へのインストール(翻訳準備中)
'Installing Moodle on SmarterASP.NET'(翻訳準備中)
'Unix or Linux Installation'(翻訳準備中)
'Mac Installation'(翻訳準備中)
'Amazon EC2 Cloud Services Installation'(翻訳準備中)9 参照
Gareth Barnard による Slideshare プレゼンテーションと付属のヘルプガイド
New Video Tutorial- How to Install Moodle on Shared Hosting via cPanel (Not Fantastico)
Video Tutorial - Install Moodle on a Virtual Box from scratch
- 投稿日:2019-10-20T08:39:48+09:00
Moodle-3.7 マニュアル - PHP
PHP は、Moodle が開発されているスクリプト言語です。PHP は、web ブラウザに組み込んで使われます。web サーバは、PHP ページを拡張子により検出し、PHP に送られた後に実行されます。Moodle を効率的に動作させるためには、適切に設定された PHP がインストールされている必要があります。
内容
1 PHP のバージョン
2 PHP の設定
3 HTTP_RAW_POST_DATA エラー
4 正しい php.ini を見つける
5 PHP Extension とライブラリ
6 追加で extension をインストールする
7 .htaccess ファイル
8 phpinfo
8.1 Moodle において phpinfo を表示する
8.2 Moodle の外にある phpinfo を表示する
9 参照1 PHP のバージョン
Moodle 3.0.1 とそれ以降は、PHP 7 以降をサポートしています。しかしながら、
Moodle 3.1 とそれ以前は、PHP 7.1 以降をサポートしていません。 (これは、現在のところ、Moodle 3.4 より前のバージョンでは、Moodle と PHP の組み合わせがないことを意味しています。)Moodle 3.4 と Moodle 3.5 は、PHP 7.0,PHP 7.1 あるいは PHP 7.2 を必要とします。
Moodle 3.6 は、 PHP 7.0 あるいはそれ以降を必要とします。
Moodle 3.7 とそれ以降は、 PHP 7.1 あるいはそれ以降を必要とします。2 PHP の設定
php.ini あるいは、.htaccess (Apache を使用している場合)以下の設定をチェックしてください。
設定値が ON/OFF である場合には、ON を 1、OFF を 0 とすることができます。
php.ini を変更した場合は、サーバをリスタートすることを忘れずに。
memory_limit は、少なくとも 96M (しかしながらある関数は、この程度では動かない可能性もあります)にする必要があります。
Moodle は、これ未満であると、インストールされません。推奨値は、128M となります。大きなシステムでは、もっと大きな設定値にする必要があります。
session.save_handler は、FILES にする必要があります。
magic_quotes_runtime は、OFF にする必要があります(PHP 5.3.0 で DEPRECATED となり、PHP 7.0.0 で削除されています)。
file_uploads は、ON にする必要があります。
session.auto_start は、OFF にする必要があります。
temp folder は、宣言されている必要があり、webserver ユーザーに書き込み権限がある必要があります。
error display/logging セクションをチェックしてください。あなたの web サーバーの使用方法に合致してることを確認してください。
post_max_size と upload_max_filesize は、アップロード可能なファイルの最大のサイズを制限します。
[mail function] と database (あなたが選択したデータベースの) セクションをチェックし、あなたのサーバ設定に合致しているかを確認してください。3 HTTP_RAW_POST_DATA errors
あるユーザの環境において、MNET サーバとの間との接続、あるいは、AJAX の web サーバリクエストの際に、$HTTP_RAW_POST_DATA 関連の以下のようなエラーが出力される事が報告されています。
Request for server name returned empty response line 134 of /mnet/lib.php: call to debugging() line 115 of /admin/mnet/peers.php: call to mnet_get_public_key()これらのエラーは、 PHP 5.6 上で moodle をインストールする際に影響を及ぼす事項となり、always_populate_raw_post_data の設定がデフォルトで 0 である不具合が存在することによります。
上記エラーメッセージを回避するには、php.ini ファイルにおいて以下の設定を施してください。always_populate_raw_post_data は、 -1 に変更されるべきです。この不具合についてのさらなる情報は、こちらを参照ください。
https://bugs.php.net/bug.php?id=66763
4 正しい php.ini を見つける
しばしば、php.ini がどこにあるかがわからない、あるいは、1つ以上の php.ini が見つかることがあります。かならず、'phpinfo' を実行してください(下記参照)。php.ini ファイルのパスは、トップセクションの少し下の行にあります。
cron (あるいはその他の何か)を実行するためにコマンドライン(CLI)PHP を使っているのなら、異なる php.ini ファイルが設定されている可能性があります。それをチェックするには、以下のコマンドを実行してください。php -i | grep php.ini5 PHP Extension とライブラリ
次の PHP extension が必要または推奨 (いくつかのもの 例えば、 iconv, ctype and tokenizer は、現在では PHP にデフォルトでインストールされています)。その他のものは、インストールされるか選択される必要があります。
- iconv extension は必須です。
- mbstring extension は必須です。
- curl extension は必須です (ネットワーキングと web サービスに必要です)。
- openssl extension は推奨です (ネットワーキングと web サービスに必要です)。 *tokenizer extension は推奨です。
- xmlrpc extension is recommended (ネットワーキングと web サービスに必要です)。
- soap extension is recommended (web サービスに必要です)。
- ctype extension は必須です。
- zip extension は必須です。
- gd extension は推奨です (required for manipulating イメージを取り扱うために必要です)。
- simplexml extension は必須です。
- spl extension は必須です。
- pcre extension は必須です。
- dom extension は必須です。
- xml extension は必須です。
- intl extension は推奨です。
- json extension は必須です。 あなたが選択したデータベースのための適切な extension も必要となります。 Moodle のオプションの仕組みをサポートするためには、その他の PHP extension が必要となるかもしれません。
6 追加で extension をインストールする
これは、あなたのマシンに PHP がインストールされている PHP と、どのようなアクセスをするか、に依ります。以下がその可能性となります。
- これがホストされたサーバであるのなら、管理者またはホストしている会社に問い合わせる必要があります。
- PHP がソースからコンパイルされているのなら、configure 設定を変更して再コンパイルがひつようとなります。 Compiling PHP from source を参照してください。
- パッケージからインストールされている(Linux では特に)のなら、必要とされるパッケージをインストールできます(該当する Linux ディストリビューションのドキュメントを参照してください)。
- Windows をつかっているなら、php.ini における該当する DLLをの行のコメントを外してください。
変更や追加をした後に、web サーバをさいきどうすることを忘れずに。
7 .htaccess ファイル
php.ini ファイルにアクセスできない、あるいは、その他の PHP アプリケーションが要求する設定と衝突する場合は、そのサーバ上で、.htaccess ファイルに記述することで PHP の設定を変更する事ができます。これは、Moodle installation の、'root' (すなわち、config.php と同じ場所)に置く必要があります。
このファイルは、必ずしも .htaccess という名前ではないかもしれず、全く動作しないかもしれません。サーバ管理者に聞いてください。
設定は、以下の行をどちらかのフォーマットで追加します。php_value name value php_flag name on/off一例:
php_value memory_limit 128M php_flag register_globals off8 phpinfo
phpinfo 表示は、PHP のインストール時の情報が格納されています。以下のようなことをチェックするのに有益です。
- PHP のインストール状態が Moodle のシステム要求に見合っているか
- PHP のインストール状態の現在のサーバの設定値、例えば、ファイルアップロードの上限
- Moodle が動作するために必要なモジュールがインストールされているか、例えば、LDAP 認証のための LDAP モジュール
8.1 Moodle において phpinfo を表示する
管理者は、Moodl の外に存在する phpinfo を以下をたどることで表示できます。
PHP info in Settings > Site administration > Server > PHP info8.2 Moodle の外にある phpinfo を表示する
phpinfo 情報を表示するには
info.php というファイルをテキストエディタで作成し、以下の行を含めます。
<?php phpinfo(); ?>
- このファイルを、info.php として保存します。
- あなたのサーバの web がアクセスできるフォルダにアップロードします。
- プラウザで開きます。一例として、http://<server-name>/info.php
9 参照
Compiling PHP from source
Moodle と PHP7 の開発者向けのドキュメント
PHP web サイト
IIS のための Microsoft PHP インストーラカテゴリ:インストール