CGI・PHP・SSIは、HTMLだけでは実現できないアクティブなコンテンツを作成することができる仕組みです。
これらの仕組みを利用すると掲示板・アクセスカウンター・フォームメールなどをホームページ上に設置することができます。
スマイルサーバではお客さまご自身で作成されたCGI・PHP・SSIや、インターネット上で配布されているCGIなどを自由に設置して使うことができます。
CGI・PHPを使用できるのはサイト管理者(admin)・Web特権ユーザーです。
SSIを使用できるのはサイト管理者(admin)・Web特権ユーザー・Webユーザーです。
メールユーザーのお客さまはWebコンテンツを設置することができませんので、CGI・PHP・SSIを使用することはできません。
CGI・PHP・SSIを設置できるディレクトリはそれぞれ以下の通りです。
ディレクトリによって使えるコンテンツが異なりますので、ご注意ください。
[サイト管理者(admin)・Web特権ユーザー]
/home | /cgi-bin | /cgi-def | |
---|---|---|---|
CGI | ○ | ○ | ○ |
PHP(SSIタイプ) | ○ | × | × |
PHP(CGIタイプ) | ○ | ○ | ○ |
SSI | ◎※1 | × | × |
2019年8月29日以前にSSLオプションをご契約いただいた場合は /ssl ディレクトリの中にSSLコンテンツ用のhome・cgi-bin・cgi-defディレクトリが作られます。そちらのディレクトリについても上記の表と同じように動作します。
[Webユーザー]
/ | |
---|---|
CGI | × |
PHP(SSIタイプ) | × |
PHP(CGIタイプ) | × |
SSI | ○※2 |
CGIの場合、ファイルをアップロードした後にファイルのパーミッションを変更する必要があります。
CGIの実行ファイルは700(rwx------)、 CGIのデータファイルは600(rw-------)に設定してください。
CGIの言語はPerl・Ruby・C言語・シェルスクリプト・Pythonに対応しています。
/home ・ /ssl/home ディレクトリ内にCGIを置く場合、CGIの実行ファイル(プログラムファイル)の拡張子を .cgi にする必要があります。.cgi 以外の拡張子のファイルはCGIとして実行されません。
/cgi-bin・/cgi-def・/ssl/cgi-bin・/ssl/cgi-def ディレクトリ内では拡張子にかかわらずすべてのファイルがCGIの実行ファイルとして扱われますので、拡張子に制限はありません。
各プログラムのパスは以下のようになっています。
プログラム名 | バージョン | パス | |
---|---|---|---|
ver.4 | ver.5 | ||
Perl | 5.10.1 | 5.32.1 | /usr/bin/perl /usr/local/bin/perl |
Ruby | 2.0.0 | 3.0.4 | /usr/bin/ruby |
Python | 2.6.6 | 3.9.18 | /usr/bin/python |
PHP | 5.1.6/5.3.3/5.6.20/7.2.28/7.4.15(CGIモード) 5.6.20(モジュールモード) |
7.4/8.3(CGIモード) 8.3(モジュールモード) |
/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ディレクトリに設置できるファイルは30MBの制限が設けられています。
こちらの制限を越えるファイルは設置することができませんので、ご注意ください。
PHPの動作形式として、SSIタイプ(Apacheのモジュール形式)とCGIタイプがあります。
一般的に、PHPはSSIタイプとして使用されます。
- SSIタイプのPHPはHTMLファイルの中にPHPスクリプトを書くだけで動作します。
ただし、スマイルサーバV2/V3との互換性のためCGIタイプのPHPも動作するようになっています。 - ※Ver.4のみ PHP5.6 CGIタイプ、PHP7.2 CGIタイプ、PHP7.4 CGIタイプのみサイトマネージャよりPHP.INIを追記することが出来ます。
■ CGIタイプの場合
- 記述方法
記述したCGIスクリプトの1行目に
#!/usr/bin/phpもしくは#!/usr/local/bin/php
と記述してください。 - パーミッション
転送後CGIと同様にパーミッションを700(rwx------)に変更してください。 - 拡張子について
CGIタイプのPHPの場合、拡張子はCGIに準じます。
■ SSIタイプのPHPの場合
- 拡張子について
/home ・ /ssl/home ディレクトリ内に置くPHPファイルの拡張子を .php もしくは.phtml にしてください。
これらの拡張子のファイルだけがPHPファイルとして処理されます。
また、 拡張子が「.phps」のファイルは、phpソースとして処理されます。
■ 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までの範囲であれば任意の値を設定できます。
本設定例ですが、実際に設置の際には、十分に動作確認を行い、お客さまの責任の元でご利用くださいますようお願いいたします。
<お知らせ>
PHPの「OpenSSL」「cURL」モジュールをご利用いただけるようになりました。 * これらはECサイトにおいて、決済サービスとセキュアに接続するために必要となる場合のあるモジュールとなります。
CGIタイプをご利用の場合、サイトマネージャより編集することが可能です。
方法は以下をご参照ください。
<注意点>
- PHPのパラメータを読み込む順序は、サーバ全体のPHP.INI→本機能で設定したパラメータ→.user.iniとなります。
そのため、.user.iniを設置されている場合は、その値が最終的に有効となり、既に.user.iniを設置されている場合、サイトマネージャで同一のパラメータを記述しても設定が反映されませんのでご注意ください。 - PHP.ini編集設定は上級者向けのサポート対象外機能です。お客さま責任の元ご利用ください。
編集後、動作不具合が発生しても一切の責任を負いかねます。
PHP7.4 CGIタイプでは、IMAP関数をご利用になることができません。
IMAP関数を利用する必要がある場合は、他のバージョンをご利用ください。
SSIは /home ・ /ssl/home ディレクトリ内とWebユーザーの /(ルート)ディレクトリ内で使用することができます。/cgi-bin・/cgi-def・/ssl/cgi-bin・/ssl/cgi-def ディレクトリではSSIを使用することができません。
SSIファイルの拡張子は .shtml にして下さい。
.shtml以外の拡張子でSSIを実行させる場合は、「.htaccess」ファイルを使用して設定を変更する必要があります。
.htaccess に記述する内容は
AddHandler server-parsed .html
となります。
※上記記述(AddHandler)はWebユーザーの/(ルート)ディレクトリ内ではご利用いただけません。Webユーザーの領域でSSIをご利用になる場合は、ファイルの拡張子は .shtml にして下さい。
/home ・ /ssl/home ディレクトリ内ではApacheがサポートしているすべてのSSIコマンドを使うことができます。
Webユーザーの /(ルート)ディレクトリ内では「# exec」で始まるコマンドを除くSSIコマンドを使うことができます。
CGIでメールを送信する処理を行う場合は、サーバーに用意されているsendmailをご利用頂く事ができます。
sendmailが置かれているサーバー上のパスは、 /usr/lib/sendmail もしくは /usr/sbin/sendmail です。
CGIスクリプト内で記述するコマンドの書式は、以下の様になります。
/usr/lib/sendmail -t -f(発信元アドレス)
(発信元アドレス)にはメールの発信元として使用するメールアドレスを入力して下さい。
通常はお客さまご自身のメールアドレスを設定します。 例えば、お客さまのメールアドレスがsmiletaro@smileserver.ne.jpの場合は
/usr/lib/sendmail -t -f smiletaro@smileserver.ne.jp
と記述して下さい。
上記のアドレスは例として挙げたものです。 設定したアドレスには配送エラーの通知などが届きますので、 このアドレスはそのまま記述せず、必ずお客さまご自身のメールアドレスを記述してご利用下さい。
なお、スマイルサーバではメールサーバープログラムにqmailを使用しておりますので、 実際にはsendmailはインストールされておらず、sendmailはqmailへのリンクとなっております。
基本的にはsendmailと同様な方法でご利用頂く事が可能ですが、sendmailのオプションは上記の様に「-t」と「-f(発信元アドレス)」のみをご使用下さい。
UNIXコマンドをCGIから呼び出して使用したい場合は、サイトマネージャーからコマンド検索を行うことができますのでそちらを使用してコマンドのパスを検索して下さい。
よく使うコマンドのパス:
【sendmail】/usr/sbin/sendmailまたは/usr/lib/sendmail
画像処理を行うライブラリ「GD」および「ImageMagick」に対応しています。
これらのライブラリを使用することにより、サムネイル画像の自動生成などの動的な画像処理をホームページ上で行うことが出来るようになります。
グラフィックライブラリをご利用になる場合は、お客さまにて必要な処理を行うプログラム(CGI・PHP)を作成してサーバーに設置して下さい。
具体的なプログラムの記述方法については弊社のサポート対象外となりますので、使用方法について解説されている書籍・サイトなどをご参考にプログラムを作成して下さい。
プログラムの言語はPerl・PHP・C言語をご利用頂くことができます。
Perl用のインタフェースはGD.pmおよびPerlMagickをご利用頂くことができます。
PHPの場合はPHPに標準実装されているイメージ関数をご利用下さい。
【参考サイト】
スマイルサーバのサーバーでは以下のPerlモジュールをご利用頂くことができます。
各モジュールの使用方法・Perlの記述方法についてはサポート外となりますので、ご了承の上ご利用下さいます様お願い致します。