ホームページ~CGI・PHP・SSI

1. 概要

CGI・PHP・SSIは、HTMLだけでは実現できないアクティブなコンテンツを作成できる仕組みです。
これらの仕組みを利用すると、掲示板・アクセスカウンター・フォームメールなどをホームページ上に設置できます。メール・Webスタンダードサービスではお客様ご自身で作成されたCGI・PHP・SSIや、インターネット上で配布されているCGIなどを自由に設置して使用することができます。

2. 使用できるユーザー

CGI・PHP を使用できるのはサイト管理者・Web特権ユーザーです。
SSI を使用できるのは サイト管理者・Web特権ユーザー・Webユーザーです。
AnonymousFTPのお客様はWebコンテンツを設置することはできません。

3. ファイルの設置ディレクトリ

CGI・PHP・SSIを設置できるディレクトリはそれぞれ以下のとおりです。
ディレクトリによって使えるコンテンツが異なりますので、ご注意ください。

[サイト管理者・Web特権ユーザー]

/home /cgi-bin /cgi-def
CGI
PHP(SSIタイプ) × ×
PHP(CGIタイプ)
SSI ※1 × ×

※1 すべてのSSIコマンドを使用することができます。
2019年8月28日以前にHTTPSを利用開始した場合は /ssl ディレクトリと、その中にSSLコンテンツ用の home・cgi-bin・cgi-defディレクトリが作られます。

[Webユーザー]

/
CGI ×
PHP(SSIタイプ) ×
PHP(CGIタイプ) ×
SSI ※2

※2 「# exec」で始まるSSIコマンドを使用することはできません。

CGIの場合、ファイルをアップロードした後にファイルのパーミッションを変更する必要があります。CGIの実行ファイルは 700(rwx------)、 CGIのデータファイルは 600(rw-------) に設定してください。

4. CGI

CGIの言語は Perl・Ruby・C言語・シェルスクリプト・Python・PHP に対応しています。
/home・/ssl/home ディレクトリ内にCGIを置く場合、CGIの実行ファイル(プログラムファイル)の拡張子を.cgiにする必要があります。.cgi以外の拡張子のファイルはCGIとして実行されません。

/cgi-bin・/cgi-def・/ssl/cgi-bin・/ssl/cgi-def ディレクトリ内では拡張子にかかわらず、すべてのファイルがCGIの実行ファイルとして扱われますので、拡張子に制限はありません。
2019年8月29日以降にHTTPSを利用開始された場合、/ssl以下のフォルダーは存在しません。
各プログラムのパスおよびバージョンは以下のとおりです。

プログラム名 バージョン パス
Perl 5.10 /usr/bin/perl
/usr/local/bin/perl
Ruby 2.0.0 /usr/bin/ruby
Python 2.6.6 /usr/bin/python
PHP 5.1/5.3/5.6/7.2/7.4(CGIモード)
5.6(モジュールモード)
/usr/local/bin/php

Ruby、Pythonで作成したCGIを/home・/ssl-home ディレクトリにおいてそれぞれの拡張子(.rb、.py)で動作させたい場合は、

  • AddHandler cgi-script .rb
  • AddHandler cgi-script .py

を記述した.htaccessを設置してください。

サーバーへファイルをアップロードする場合はFTPソフトウェアの転送モードをアスキーモード(テキストモード)に設定してください。 アスキーモードで転送しない場合、正しく動作しなくなる場合があります。
C言語を使用したCGIの場合は、あらかじめLinux用にコンパイルしたバイナリファイルをアップロードしてください。サーバーへファイルをアップロードする場合はFTPソフトウェアの転送モードをバイナリモードに設定してください。バイナリモードで転送しない場合、正しく動作しなくなる場合があります。
シェルスクリプトで記述したCGIスクリプトの1行目には#!/bin/shと記述してください。サーバーへファイルをアップロードする場合はFTPソフトウェアの転送モードをアスキーモード(テキストモード)に設定してください。アスキーモードで転送しない場合、正しく動作しなくなる場合があります。
なお、無限ループなどによりサーバーが高負荷状態に陥ることを防ぐため、1回の動作時間が一定時間以上になっているCGIは自動的に終了する場合があります。
サーバーが高負荷な状態に陥ることを防ぐための対処として、メモリの使用量・CPUの使用時間に関しても同様に制限を設けています。
CGIにはシステムの/tmpディレクトリにテンポラリーファイルを作成する挙動をするものがあります。/tmpディレクトリに設置できるファイルは20MBの制限を設けています。こちらの制限を超えるファイルは設置できませんので、ご注意ください。

5. PHP

PHPの動作形式として、SSIタイプ(Apacheのモジュール形式)とCGIタイプがあります。一般的に、PHPはSSIタイプとして使用されます。

モジュールタイプのPHPは、HTMLファイルの中にPHPスクリプトを書くだけで動作します。
PHP7.4CGIタイプではIMAP関数をご利用になることができません。

PHPのバージョン切り替え

サイト管理者権限でPHPのバージョンを設定できます。サイトマネージャーログイン後「CGI管理>PHPバージョンの切り替え」から設定できます。
選択できるバージョンは以下です。

  • デフォルト(PHP5.6 モジュールタイプ)
  • PHP5.1 CGIタイプ
  • PHP5.3 CGIタイプ
  • PHP5.6 CGIタイプ
  • PHP7.2 CGIタイプ
  • PHP7.4 CGIタイプ

本機能のPHPバージョンを切り替えは、ユーザーが見えない上位ディレクトリー(home や data などの上位ディレクトリー)へシステムが生成した.htaccessファイルを設定します。 予め/home配下に.htaccessにてPHPバーションを指定していた場合、既設ファイルで指定されたバージョンが優先されます。 予めphp.iniなどの設定ファイルにてPHPの設定変更をしていた場合、本機能でPHPのバージョンを切り替えてもファイルの削除、ファイルの上書きは行われません。(既に設定されているファイルが優先されます)

PHPの利用方法について

■ CGIタイプの場合

  • 記述方法
    CGIスクリプトの1行目に以下を記述してください。
    #!/usr/bin/phpまたは#!/usr/local/bin/php
    パーミッション
    転送後、CGIと同様にパーミッションを700(rwx------)に変更してください。
  • 拡張子について
    /home ・ /ssl/home ディレクトリー内に置くPHPファイルの拡張子を .phpにします。
    これらの拡張子のファイルだけがPHPファイルとして処理されます
    2019年8月29日以降に HTTPSを利用開始された場合、/ssl以下のフォルダーは存在しません。

■ SSI(モジュール)タイプのPHPの場合

  • 拡張子について
    /home ・ /ssl/home ディレクトリ内に置くPHPファイルの拡張子を .php もしくは.phtml にしてください。
    これらの拡張子のファイルだけがPHPファイルとして処理されます。また、拡張子が「.phps」のファイルは、phpソースとして処理されます。
    2019年8月29日以降に HTTPSを利用開始された場合、/ssl以下のフォルダーは存在しません。

PHP.ini編集

■ php.ini の設定値の変更方法

PHP7.4 , 7.2 , 5.6 CGIタイプをご利用時にPHPの各種設定値(php.ini)を編集することができます。
<ご注意>
php.ini編集設定は上級者向けのサポート対象外機能です。お客様の責任の元ご利用ください。
編集後、動作不具合が発生しても一切の責任を負いかねます。

  • サイトマネージャーにログインし、「CGI管理>php.ini編集」をクリックします。

    左メニュー画像

  • PHPバージョンを選択し、「編集」ボタンをクリックします。

    バージョン選択と編集ボタン

  • 編集画面で設定値を変更したい項目と設定値を入力します。その後、確認し完了してください。
    指定した項目の設定値が上書きされます。
    編集設定した内容を削除するとデフォルト値に戻ります。

    入力内容と確認ボタン

PHPバージョン5.3のCGIタイプについて

■ php.ini の設定値の変更方法

CGIタイプのため、.htaccessファイル内に記述したphp_value upload_max_filesizeなどの内容が有効になりません。
対処方法としては、 PHPの実行ファイルと同階層に [.user.ini]ファイルを設置する ことで、設定変更可能なディレクティブがあります。

参考例
【 .user.ini 】
post_max_size = 20M
upload_max_filesize = 20M
memory_limit = 128M

20MBまでの範囲であれば任意の値を設定できます。

本設定例ですが、実際に設置の際には十分に動作確認を行い、お客様の責任においてご利用くださいますようお願いいたします。
SSIは/home・/ssl/homeディレクトリ内とWebユーザーの/(ルート)ディレクトリ内で使用できます。/cgi-bin・/cgi-def・/ssl/cgi-bin・/ssl/cgi-defディレクトリではSSIを使用できません。


PHPのdefault_charsetについて

PHP5.6.0 以降は "UTF-8" がデフォルトになり、その影響で以前のバージョンのPHPで書かれたWebページのマルチバイト文字が文字化けすることがあります。charsetを強制的に指定するか、phpをUTF-8で書く必要があります。

詳細は下記URLをご参照ください。

http://php.net/manual/ja/ini.core.php#ini.default-charset

6. SSI

SSIは /home ・ /ssl/home ディレクトリー内とWebユーザーの /(ルート)ディレクトリー内で使用することができます。
/cgi-bin・/cgi-def・/ssl/cgi-bin・/ssl/cgi-def ディレクトリではSSIを使用することができません。
2019年8月29日以降に HTTPSを利用開始された場合、/ssl以下のフォルダーは存在しません。

ファイルの拡張子は.shtmlにしてください。

.shtml 以外の拡張子でSSIを実行させる場合は、「.htaccess」ファイルを使用して設定を変更する必要があります。
.htaccessに記述する内容は以下のとおりです。
AddHandler server-parsed .html
上記記述(AddHandler)はWebユーザーの/(ルート)ディレクトリ内ではご利用いただけません。Webユーザーの領域でSSIをご利用になる場合は、ファイルの拡張子は .shtml にしてください。
/home・/ssl/home ディレクトリ内ではApacheがサポートしているすべてのSSIコマンドを使えます。
Webユーザーの/(ルート)ディレクトリ内では「# exec」で始まるコマンドを除くSSIコマンドを使用できます。
2019年8月29日以降に HTTPSを利用開始された場合、/ssl以下のフォルダーは存在しません。

7. sendmailの使用

CGIでメールを送信する処理を行う場合は、サーバーに用意されているsendmailをご利用いただけます。sendmailが置かれているサーバー上のパスは、/usr/lib/sendmailもしくは/usr/sbin/sendmailです。CGIスクリプト内で記述するコマンドの書式は以下のとおりです。

/usr/lib/sendmail -t -f(発信元アドレス)
(発信元アドレス)にはメールの発信元として使用するメールアドレスを入力してください。通常はお客様ご自身のメールアドレスを設定します。

例)お客様のメールアドレスがexample@idchosting.jpの場合
/usr/lib/sendmail -t -fexample@idchosting.jp

設定したアドレスには配送エラーの通知などが届きますので、このアドレスはそのまま記述せず、必ずお客様ご自身のメールアドレスを記述してご利用ください。
なお、メール・WebスタンダードサービスならびにメールプレミアムWebオプションサービスでは、メールサーバーソフトウェアにqmailを使用しておりますので、実際にはsendmailはインストールされておらず、sendmailはqmailへのリンクとなっております。基本的にはsendmailと同様な方法でご利用いただくことが可能ですが、sendmailのオプションは上記のように「-t」と「-f (発信元メールアドレス)」のみをご使用ください。

CGIからのメール送信は、CGIメール送信用のメールユーザーを作成してSMTP経由で行うことを推奨しております。sendmailコマンドによるCGIからのメール送信は、複数のお客様が共有するIPアドレスを送信元IPアドレスとして使用します。このため他のお客様による迷惑メール送信行為によりRBLなどのブロックリストに登録される場合があります。

8. グラフィックライブラリ

画像処理を行うライブラリ「GD」および「ImageMagick」に対応しています。これらのライブラリを使用することにより、サムネイル画像の自動生成などの動的な画像処理をホームページ上で行えるようになります。
グラフィックライブラリをご利用になる場合は、お客様にて必要な処理を行うプログラム(CGI・PHP)を作成してサーバーに設置してください。具体的なプログラムの記述方法についてはサポート対象外となりますので、使用方法について解説されている書籍・サイトなどをご参考にプログラムを作成してください。

プログラムの言語はPerl・PHP・C言語をご利用いただけます。Perl用のインタフェースはGD.pmおよびPerlMagickをご利用いただくことができます。PHPの場合はPHPに標準実装されているイメージ関数をご利用ください。

9. Perlのモジュール

メール・Webスタンダードサービスのサーバーでは、Perlモジュールをご利用いただくことができます。

詳細はこちらをご確認ください。

各モジュールの使用方法・Perlの記述方法についてはサポート外となりますので、ご了承のうえご利用くださいますようお願いいたします。

10. 制限事項

ひとつのCGIプロセスに割り当てられるリソースには以下の制限があります。

  • メモリ:500MB
  • CPUtime:20秒
  • プロセス起動時間:60秒以内

頻繁に起動されるCGIプロセスに関しては安定運用の目安として1プロセスあたり10MB程度のメモリ利用を推奨しております。
本制限値は定常的にすべてのお客様がこの値を利用できることを保証するものではございません。
本制限値は運用上の理由で変更される場合があります。
定常的に安定運用の目安を超えている場合、他のお客様のご利用状況によっては制限値を下げさせていただく場合があります。