センターサーバにおけるPHP利用について
メディアセンターが提供する以下のサーバで PHP が利用できます。
利用可能な PHP のバージョン は
- PHP 7.2 (推奨)
- PHP 5.6
です。
PHPを利用するためには、利用する次のサーバ毎にバージョンを設定する必要があります。- loginサーバ(PHPプログラミング)
- homeサーバ(Webサービス [個人アカウント/クラスアカウント/グループサービス] )
- hostingサーバ(PHPプログラミング/Webサービス)
-
最近、PHPで動作するCMS(コンテンツ管理システム)の脆弱性を狙った不正アクセスが報告されています。 CMSおよび利用プラグインの利用にあたっては、発行元のサイトを定期的に確認して頂き、常に最新バージョンを保つようにしてください。
お知らせ
- 2019/1/7 PHP 7.0 の提供を終了
- 2018/8/3 PHP 7.2 の提供を開始
- 2017/9/29 PHP 5.4系の提供を終了
- 2017/3/30 PHP 5.1系/5.3系の提供を終了
- 2016/12/1 PHP 5.6.28 / PHP 7.0.13 の提供を開始
- 2015/8/17 PHPの利用方法を更新、バイナリのコピーを必要としない方法を掲載。
- 2015/7/29 PHP 5.4.41 の提供を開始
- 2013/12/5 PHP 5.3.27 の提供を開始
PHPの利用方法
以下では、loginサーバまたはhostingサーバにSSHログインして操作する方法を説明しています。ファイルの作成・編集はSFTP/SCPソフト等を使用することもできます。
それぞれのサーバへのSSHログイン方法は以下を参照してください。- loginサーバへのSSHログイン (Windows / Mac)
- hostingサーバへのSSHログイン(ホスティングアカウント利用方法)
PHPプログラミングで利用する場合
- サーバ上でプログラムを実行する際に、PHP7.2の場合、/usr/bin/php72 を指定します。PHP5.6の場合、/usr/bin/php56 を指定します。
$ /usr/bin/php72 -v PHP 7.2.6 (cli) (built: Jun 26 2018 13:48:34) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
WebサービスでPHPを利用する場合
センターのWebサービスでは、public_htmlフォルダ以下に「php.cgi」ファイルの作成と「php.cgi」ファイルのパーミッションを指定することでPHPで動作するようになります。
-
loginサーバまたはhostingサーバにsshでログインし、cdコマンドでpublic_htmlフォルダに移動します。(homeサーバの設定はloginサーバで以下の内容を実施します)
$ cd ~/public_html
- 以下の2行を含む「php.cgi」ファイルを作成します。
#!/bin/sh exec /var/www/cgi-bin/php72-cgi
※上記ではPHP7.2を指定しています。 PHP5.6にする場合は、php72-cgi の部分を php56-cgi に変更することで、指定できます。 - 「php.cgi」ファイルのパーミッションを、chmodコマンドで 700 に変更します。
$ chmod 700 php.cgi
- 「.htaccess」ファイルに以下の2行を追加します(すでに該当する行がある場合は修正します)。
「.htaccess」ファイルがない場合は以下の2行を含む「.htaccess」ファイルを public_html 以下に作成します。
※ACCOUNTの部分はそれぞれ対応するアカウント名もしくはグループ名に置き換えてください。AddHandler php-cgi .php Action php-cgi /~ACCOUNT/php.cgi
ホスティングドメイン(adminアカウント)の場合は以下のように記述します。AddHandler php-cgi .php Action php-cgi /php.cgi
- 「.htaccess」ファイルのパーミッションを、chmodコマンドで 604 に変更します。
$ chmod 604 .htaccess
- 「.htaccess」ファイルを置いたディレクトリ以下の「.php」ファイルが PHP5.6系、PHP7.2系で動作するようになります。「.php」ファイルのパーミッションは、600 に設定します。
上記設定をコマンドで実施するスクリプトも用意してあります。
■ homeサーバの個人アカウント、およびホスティングアカウントの場合
---- .htaccessの修正
$ cd
$ cd public_html
$ /home/imctools/php-cgi/htaccess.sh >> .htaccess
この操作で.htaccessに追加されます
$more .htaccess
AddHandler server-parsed .html
AddHandler php-cgi .php
Action php-cgi /~ACNAME/php.cgi (ACNAMEは個人アカウント名です)
青い部分が追加されたところです。
----- php.cgiの作成
$ cd
$ cd public_html
利用するバージョンに合わせてコピーをしてください。
$ cp /home/imctools/php-cgi/php72.cgi php.cgi # PHP7.2を使う場合
パーミッションを700に変更します。
$ chmod 700 php.cgi
■ homeサーバのグループサービスの場合
$ sudo -u GNAME -s
$ [sudo] password for ACNAME: (パスワード入力)
上記でグループ権限になります(GNAMEはグループ名です)
$ cd
$ cd public_html
この後は個人アカウントと同じです。
PHPのバージョンアップ方法
public_htmlフォルダに設置した「php.cgi」の内容を以下のように変更することでPHPのバージョンアップ(PHP7.0からPHP7.2へ)が可能です(バイナリのコピーは必要ありません)。PHP7.2 で動作しない場合は、バージョンダウン (PHP7.0からPHP5.6へ)してください。
#!/bin/sh
exec /var/www/cgi-bin/php70-cgi
↓
#!/bin/sh
exec /var/www/cgi-bin/php72-cgi
※ ファイル名が、「php5.cgi」だった方は、「php.cgi」へファイル名を変更してください。
同時に、.htaccess にphp5-cgi や、php5.cgi と書かれてる方は、5 を削除して以下のように修正してください。
AddHandler php5-cgi .php Action php5-cgi /~ACCOUNT/php5.cgi ↓ AddHandler php-cgi .php Action php-cgi /~ACCOUNT/php.cgi
※セキュリティ上の理由等により、メディアセンターにおいて強制的にバージョンアップを行う場合があります(例:PHP5.4系を指定していてもPHP5.6系が使用される)。
PHP利用上の注意
センターサーバは、学内利用者でサーバ資源を共有しています。他のユーザに迷惑がかからないよう、以下の点に十分に注意して利用してください。
- 文字コードと改行コードに気をつけてください
- 高負荷のプログラム実行は避けてください
- パーミッションの設定は適切に行ってください
- デーモン等によるプログラム常駐は避けてください
- PHPを利用したソフトウェアの管理を適切に行ってください
文字コードで UTF-8 を使う場合は、BOMなし にしてください。改行コードは、LF にしてください。
単一プログラムでも高負荷で動作すると、サーバ全体の動作に影響を及ぼします。また一人が複数プログラムを同時動作させる場合でも同様な症状が発生する可能性があります。特に自作プログラムを動作させる場合は、十分なデバッグを行った上で利用するようにして下さい。
ファイルのパーミッションの設定が不適当な場合、プログラムの動作に不具合が生じたり不正アクセス等の標的になる可能性があります。より安定、安全に利用するために、適切なパーミッションを設定してください。パーミッションについては ファイルの属性について をご覧下さい。
原則としてセンターサーバ上で常駐するユーザプログラムの動作は禁止しています。検証が不十分な自作プログラムを共有サーバ上で動作させると、メモリリーク等のプログラムのバグによりサーバの動作に大きな影響を与える可能性があります。このような行為は避けるようにお願いします。
PHPを利用したソフトウェア(CMSやwiki等)を導入する場合、継続的な管理が必要不可欠です。ソフトウェアの発行元サイトを定期的に確認して頂き、脆弱性対策や最新バージョンへのアップデートなど、必要な対策を随時行うようにしてください。
用語説明
- PHP … PHP (PHP:Hypertext Preprocessor ピーエイチピー ハイパーテキスト プリプロセッサーを再帰的に略したものです) は、広く使われているオープンソースの汎用スクリプト言語、プログラム言語です。 PHP は、特に Web 開発に適しており、HTML に埋め込むことができます。
- CMS … コンテンツ管理システム(Contents Management System)の略。Webサイト構築のための専門知識(htmlファイルやCGIプログラミング)がなくても、Webサイトのコンテンツ作成や管理が行える仕組み。
- 不正アクセス … コンピュータやサーバに対して、正規のアクセス権を保持していないものが不正な手段によりアクセス権を取得し、不正に利用するあるいは利用を試みること。主な手段としては、ID/パスワードの盗用によるなりすましや、ソフトウェアの脆弱性の悪用がある。
- セーフモード … 共有サーバ上でPHPを動作させる際にセキュリティを高めるために導入された仕組み。セーフモードを有効にすることでPHPの一部機能が制限される。PHP5.4で廃止。
PHP:セーフモード http://php.net/manual/ja/features.safe-mode.php