PHPについて

利用するPHPのバージョンを指定するには — Webからのご利用

PHPのバージョンを切り替える場合は、コントロールパネルのユーザ一覧からコンテンツ管理アカウント(FTPアカウント)に指定されているアカウントの設定を開き、上部メニューから「web設定」をクリックしてPHPの指定の項目でご希望のバージョンを選択することができます。

edit.png

切り替えを行うとコンテンツディレクトリに .htaccess というファイルが作成され、次のような記述が追加されます。(PHP8.1を選択した場合)

 Action php-script /.system_cgi/php81.cgi

一部のコンテンツディレクトリのPHPバージョンを変更したい場合は、そのディレクトリに次のいずれかの記述を含んだ .htaccess ファイルを設置してください。

◎ PHP8.1の場合
 Action php-script /.system_cgi/php81.cgi

◎ PHP7.4の場合
 Action php-script /.system_cgi/php74.cgi

◎ PHP7.2の場合
 Action php-script /.system_cgi/php72.cgi

◎ PHP5.4の場合
 Action php-script /.system_cgi/php54.cgi

※ PHP5.4はCentOS7のパッチを流用して2024年6月まで長期サポートの予定です。(サポート期間は変更する場合がございます。)
※ PHP7.2は2020年11月30日で開発チームのサポートが終了しています。
※ PHP5.3は2023年5月でご提供を終了いたしました。PHP5.3を指定した場合はPHP5.4で実行されます。

サポート終了したバージョンは以後更新が行われませんので、安全上速やかにサポート中のバージョンに切り替えをお勧めいたします。

PHPを利用するには — コマンドラインからのご利用

コマンドラインや .forward などからPHPを利用する場合は /usr/local/bin/php もしくは特定のPHPのバージョン毎のパスを指定します。スクリプト(バッチファイル)として利用する場合は、スクリプト冒頭で次の例のように php.ini のパスを指定してください。(PHP7.4の場合)

 #! /usr/local/bin/php74 -c/home/55/abc1200/.php/php.ini

※ -c の後に空白を入れないでください。

PHPを利用するには — PHPのバージョンとパス

PHPのバージョンと指定するパスは次の通りです。

 PHPバージョン  パス
 PHP5.4  /usr/local/bin/php
 ※ 設定により実行するPHPバージョンを変更可
 PHP8.1  /usr/local/bin/php81
 PHP7.4  /usr/local/bin/php74
 PHP7.2  /usr/local/bin/php72
 PHP5.4  /usr/local/bin/php54

  • /usr/local/bin/php は2017年2月1日からPHP5.4として動作するように変更いたしました。
  • /usr/local/bin/php はお客様のホームディレクトリ直下に php-cli-version.txt (もしくは.php-cli-version.txt)というファイル名でバージョン番号を書き込むことで任意のバージョンで動作するように変更することができます。
  • バージョンと php-cli-version.txt に書き込む番号の対応は次の通りです。

 PHPバージョン  記入する番号
 PHP8.1  81
 PHP7.4  74
 PHP7.2  72
 PHP5.4  54

4552 / 53 55 等を記入した場合、PHP5.4 が実行されます。
70を記入した場合はPHP7.4が実行されます。

PHPの環境設定(php.ini)

  • php.ini はデフォルトでコンテンツ管理アカウントのディレクトリ直下の .php ディレクトリ内に配置されています。
  • php.ini の内容は即時に反映されます。
  • 処理を実行するディレクトリごとに専用の php.ini を作成・指定することができます。CGI版の場合は .htaccess ファイルに以下の例のように php.ini を設置したディレクトリ(この例の場合はmycontents)を記述してください。

 setenv PHPRC /home/11/abc1200/example.jp/mycontents

  • コマンドライン版をご利用の場合は、先の説明の通り -c オプションで php.ini をご指定ください。
  • PHP5.3以降では php.ini に以下の記述が必要です。

 date.timezone = Asia/Tokyo

  • PHP5.4以降では php.ini に以下の記述が含まれている場合、エラーとなり実行できません。

 allow_call_time_pass_reference
 register_long_arrays
 register_globals
 magic_quotes_gpc
 magic_quotes_runtime
 magic_quotes_sybase

※ PHP5.4では register_globalsmagic_quotes の機能自体が廃止されております。

  • PHPのバージョンとモジュールによっては extension= の記述を削除する必要があります。モジュール一覧で本体組み込みになっているものは extension= でのロードは行わないように変更が必要です。詳しくはご利用いただけるPHPモジュールをご確認ください。

CGI版とモジュール版の違い

弊社サーバのPHPはいずれもCGI版をご提供しております。Apacheモジュールとして動作する場合との違いは以下の通りです。

   モジュール版(※1)  CGI版
 実行権限  httpd (システム権限)  お客様アカウント
 php.ini の設定変更  不可  可能
 PHPの設定変更  .htaccess (※2)  php.ini (※3)
 実行時のメモリ制限  8MB (一律に制限)  php.ini で変更可能(※4)
 BASIC認証  利用可能  利用可能(※5)

※1 当社サーバではモジュール版はご提供しておりません。
※2 当社サーバでは .htaccessphp_valuephp_flags がありますとInternal Server Errorになります。
※3 PHPの環境設定(php.ini)をご覧ください。
※4 最大値はCGIの実行制限によるため、ご契約プラン毎に異なります。
※5 CGI版でのBASIC認証利用につきましては、BASIC認証についてをご覧ください。

ご利用いただけるPHPモジュール

  • 赤色のモジュールを利用する場合には、お客様の php.ini の末尾に以下の例のようにモジュール名を記述してください。

 extension=json.so
 extension=pgsql.so

  • 青色のモジュールは php.ini への記述は不要です。

 モジュール  解説  備考
 GD (gd.so)  グラフィックライブラリGD  -
 ImageMagick (imagick.so)  画像処理関数  PHP5.4 / PHP7.2以降でご利用いただけます。
 mcrypt (mcrypt.so)  暗号化ライブラリmcrypt  -
 hash / mhash  チェックサム・ハッシュ関数  -
 xml  XMLのサポート  PHP5.5以降では本体組み込みになりました。
 DOM (dom.so)  XML用のAPI  -
 xmlreader (xmlreader.so)  XML  試験的導入
 xmlwriter (xmlwriter.so)  XML  試験的導入
 simplexml (simplexml.so)  XML  試験的導入
 xmlrpc (xmlrpc.so)  XMLを使用したリモート実行機能  -
 spl  PHPのための標準的インターフェースやクラス  -
 socket (sockets.so)  通信用socket  -
 FTP (ftp.so)  FTPプロトコル  -
 curl (curl.so)  各種通信プロトコル  -
 openssl (openssl.so)  暗号通信ライブラリopenssl  -
 mbstring (mbstring.so)  日本語  -
 mecab (mecab.so)  日本語の形態素解析エンジン  PHP7.4から提供中止
 iconv (iconv.so)  文字コード変換ライブラリ  -
 pcre  perl互換正規表現  -
 Zlib (zlib.so)  圧縮ライブラリ  -
 filter (filter.so)  入力データの検証  -
 session (session.so)  セッション機能  -
 PostgreSQL (pgsql.so)  PostgreSQLデータベース  -
 MySQL (mysql.so)  MySQLデータベース  PHP7.0以降では廃止されました。mysqliをご使用ください。
 MySQLi (mysqli.so)  MySQL改良版拡張モジュール  PHP5.4では php.ini への追加が必要です。PHP7.xでは追加しなくともご利用いただけます。
 SQLite (sqlite.so)  SQLiteデータベース  -
 PDO (pdo.so)  データベースアクセス用インターフェース (pdo_mysqlなどで使用) ※2  -
 pdo_sqlite (pdo_sqlite.so)  SQLiteをPDOインターフェースから利用するためのドライバ (sqlite.so の関数とは使用方法が異なります。)  -
 pdo_mysql (pdo_mysql.so)  MySQLをPDOインターフェースから利用するためのドライバ (mysql.so の関数とは使用方法が異なります。)  試験的導入
 pdo_pgsql (pdo_pgsql.so)  PostgreSQLをPDOインターフェースから利用するためのドライバ (pgsql.so の関数とは使用方法が異なります。)  試験的導入
 bcmath (bcmath.so)  任意精度数学関数  -
 json (json.so)  JavaScriptオブジェクトのシリアライズ機能  -
 gettext (gettext.so)  国際化プログラムの作成支援ライブラリ  -
 Calendar (calendar.so)  日付変換  -
 zip (zip.so)  ZIP  -
 opcache (opcache.so)  OPcache  プログラムをキャッシュして高速化します。PHP7.0以降でご利用いただけます。
 intl (intl.so)  国際化関数  PHP5.4 / PHP7.2 でご利用いただけます。

  • 試験的導入のモジュールは予告なくシステムから削除される可能性があります。
  • PHP5.3までのSQLite (sqlite.so)は他に spl.sosimplexml.so が必要です。以下のように依存するモジュールを先に記述してください。

 extension=simplexml.so
 extension=spl.so
 extension=sqlite.so

  • PDOモジュール (pdo_mysql.so 等)も他に依存するモジュールがあります。以下のように依存するモジュールを先に記述してください。


 extension=simplexml.so
 extension=spl.so
 extension=pdo.so
 extension=pdo_sqlite.so (MySQLの場合はpdo_mysql.so)

  • OPcacheを使用することでPHPのプログラムをプリコンパイルしたものをキャッシュとして利用することができます。これによりPHPのプログラムの実行が高速になります。PHP7.2 でOPcacheを利用する場合は php.ini に以下の記述を追加してください。

 zend_extension=opcache.so

 opcache.file_cache = /home/33/abc1200/.php/tmp
 opcache.file_cache_only = on

【ご注意】
  • OPcache (opcache.so)は zend_extension= で読み込み設定します。 extension= ではありませんのでご注意ください。
  • /home/33/abc1200 の部分はお客様のホームディレクトリに置き換えてください。
  • opcache.file_cache で指定したディレクトリにプリコンパイルされたプログラムが書き出されます。

  • PHP8.1の機能詳細 (phpinfo)はこちらをご覧ください。
  • PHP7.4の機能詳細 (phpinfo)はこちらをご覧ください。
  • PHP7.2の機能詳細 (phpinfo)はこちらをご覧ください。
  • PHP5.4の機能詳細 (phpinfo)はこちらをご覧ください。

FastCGIによる高速化について

PHP8.1 /PHP7.4 / PHP7.2 でのOPcacheによるプログラムのプリコンパイル、キャッシュの他、FastCGIを使用してプロセスの半常駐化させることによって応答性能を向上させることが可能です。FastCGIによるPHP実行高速化はこちらのページをご覧ください。

文字コードについて

PHPにはフォームから入力した文字列の文字コード (漢字コード)を自動的に変換する機能があります。正しく漢字を扱う場合は以下のように php.ini ファイルでPHPの漢字コードを指定してください。

【php.ini への記述例】
 [mbstring]

 mbstring.http_input = auto
 mbstring.encoding_translation = off (文字化け対策でoffを推奨)

 mbstring.internal_encoding = EUC_JP (プログラムに合わせて指定します)
 mbstring.http_output = EUC_JP (プログラムに合わせて指定します)
 mbstring.script_encoding = EUC_JP (プログラムに合わせて指定します)

※ 文字コードには EUC_JPSJIS などが指定できます。

セッション(sessionモジュール)のご利用について

以下のように php.ini への記述の追加と、セッション情報保存用ディレクトリの作成が必要です。

  • セッション情報保存用ディレクトリを作成してください。お客様のホームディレクトリが /home/11/abc1200 の場合は、この下などに /home/11/abc1200/.php/tmp のような名前でディレクトリ (フォルダ)を作成してください。ディレクトリのパーミッションは 700 にしてください。
  • php.ini に以下の内容を追加してください。

【php.ini への記述例】
 session.save_path = /home/11/abc1200/.php/tmp

  • コントロールパネルでCGI版PHP / SuExecへの環境変更を行った場合はこの設定が自動的に行われ、ディレクトリも作成されます。

BASIC認証について

モジュール版PHPのようにCGI版PHPでBASIC認証を行いたい場合は、以下のように .htaccess に設定を追加することで、IISなどで利用されている HTTP_AUTHORIZATION 環境変数を使用した認証(※)が可能になります。

 RewriteEngine On
 RewriteCond %{HTTP:Authorization} ^(.*)
 RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

HTTP_AUTHORIZATION 変数に対応していないプログラム (PHP_AUTH_USER / PHP_AUTH_PW のみを使用するもの)に関してはプログラムに一部修正が必要です。以下ののサンプルプログラムをご参照ください。
※ PukiWikiやphpMySQLAdminなどが HTTP_AUTHORIZATION 変数に対応しておりますので修正は不要です。
※ コントロールパネルでPHP5を使用するように設定した場合は自動的にこの設定が行われます。

<?php
// この部分を冒頭に追加 //////////////////////////////////////////////////
if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
  list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
      explode(":", base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
} // 追加ここまで ///////////////////////////////////////////////////////////

// -------------------------------------------------------------------------
// ここから下は元のプログラムです。
// ここでは単にユーザ名がuser、パスワードがpasswdの場合に認証成功とする
// サンプルプログラムを例示しています。

if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header("WWW-Authenticate: Basic realm=¥"Domain Administration¥"");
    header("HTTP/1.0 401 Unauthorized");
   echo "管理者アカウントとパスワードで認証が必要です";
   system("env");
   exit();
}
if (!($_SERVER['PHP_AUTH_USER'] == 'user' && $_SERVER['PHP_AUTH_PW'] == 'passwd')) {
    header("WWW-Authenticate: Basic realm=¥"Domain Administration¥"");
    header("HTTP/1.0 401 Unauthorized");
    print "<PRE>¥n";
    echo "アカウントまたはパスワードに誤りがあります";
    exit();
}

print "<BODY>¥n";
print "<PRE>¥n";
printf("PHP_AUTH_USER [%s]¥n", $_SERVER['PHP_AUTH_USER']);
printf("PHP_AUTH_PW [%s]¥n", $_SERVER['PHP_AUTH_PW']);
?>
OK
</PRE>
</BODY>


HTMLファイルをPHPで扱う

index.html など拡張子が .php でないファイルもPHPのファイルとして扱いたい場合は .htaccess ファイルを作成して、その中に以下のように記述してください。

 AddHandler php-script .php .htm .html

※ モジュール版PHPとは設定方法が異なりますのでご注意ください。
※ この設定はサーバに本来必要のない負荷をかける場合がありますので、必要なディレクトリのみに限定してご利用ください。

その他

  • PHPに関するサポートはできませんのでお客様の責任においてご利用ください。
  • バージョンアップにともなって大きな変更が発生する場合には事前にお知らせページに掲載いたしますのでお客様自身で影響をご検討いただき、必要な修正を行っていただく必要があります。大きな変更がない場合には特にお知らせはいたしません。