Synology NASでPHPが動かない?
Synology NASにWeb StationとPHPをインストールしたのに、PHPファイルにアクセスしてもコードがそのまま表示される…。そんな経験はありませんか?
「パッケージセンターからWeb StationとPHPをインストールしたから、これで動くはず」と思ってブラウザでアクセスしてみると、画面には<?php phpinfo(); ?>という文字列がそのまま表示されてしまう。PHPとして実行されず、ソースコードがテキストとして出力されているのは明らかです。何度リロードしても結果は同じ。インストールは成功しているはずなのに、一体何が足りないのでしょうか。
結論から言うと、DSM7ではパッケージをインストールしただけではPHPは動きません。「Webサービス」の「デフォルトサービス」でPHPを有効化する必要があります。この設定を行わない限り、WebサーバーはPHPファイルをスクリプトとして認識せず、単なるテキストファイルとして扱ってしまいます。つまり、PHPエンジンに処理を渡す設定が抜けているのです。
この記事では、DSM 7.3.1(DS225+)環境で実際に確認した設定手順を解説します。社内システム用にWordPressや独自のPHPアプリケーションを動かしたい方、月額費用のかかるレンタルサーバーの代わりにNASを活用したい方の参考になれば幸いです。所要時間は5分程度で、特別な知識がなくても完了できます。

ネットで検索するとDSM6時代の古い情報が多くてハマりがちです。DSM7では画面構成が変わっているので注意してください⚠️
必要なパッケージ
まず、パッケージセンターから以下をインストールします。どちらもSynology純正のパッケージとして提供されているため、サードパーティ製のソフトウェアを別途用意する必要はありません。パッケージセンターを開き、検索ボックスに名前を入力すればすぐに見つかります。
| パッケージ | 説明 |
|---|---|
| Web Station | Webサーバー機能(必須) |
| PHP 8.2 | PHP実行環境(推奨) |
Web Stationは、Synology NASでWebサーバーを運用するための統合管理パッケージです。インストールすると、バックエンドのWebサーバー(NginxまたはApache)の設定や、PHPプロファイルの管理、仮想ホストの作成などをGUIから簡単に行えるようになります。Web Stationをインストールすると、NASの共有フォルダ内に「web」というフォルダが自動的に作成され、ここがドキュメントルート(公開フォルダ)となります。
PHPのバージョンは8.1でも動作しますが、セキュリティとパフォーマンスの観点から8.2を推奨します。PHP 8.2では、8.1以前のバージョンで発見されたセキュリティ上の脆弱性が修正されているほか、実行速度の改善も図られています。特に理由がなければ、最新の安定版である8.2を選択してください。

PHP 7.3 / 7.4 / 8.0はSynology公式でサポート終了が発表されています。今から構築するなら8.2一択です🔒
設定手順
STEP1:PHPプロファイルの設定
Web Stationを開き、PHPの拡張機能を有効化します。PHPプロファイルとは、PHPの動作設定をまとめたテンプレートのようなものです。どの拡張機能を有効にするか、キャッシュを使うかどうか、エラー表示をどうするかなど、PHPの振る舞いをここで定義します。Web Stationでは複数のプロファイルを作成でき、Webサイトごとに異なる設定を適用することも可能です。
1. Web Station → スクリプト言語の設定
DSMのメインメニューからWeb Stationを起動します。左側のメニューに「スクリプト言語の設定」という項目があるので、これをクリックしてください。インストール済みのPHPバージョンとそのプロファイルが一覧表示されます。
2. PHP 8.2の「Default Profile」を選択 → 編集
一覧の中から「PHP 8.2」の「Default Profile」を探してクリックし、選択状態にします。その状態で画面上部にある「編集」ボタンをクリックすると、プロファイルの設定画面が開きます。ここでPHPの詳細な動作設定を行います。
3. 「設定」タブで以下を設定
PHPバージョン:8.2(インストール済みのバージョン)
PHPキャッシュを有効にする:チェック
display_errorsを有効にして、PHPエラーメッセージを表示する:チェック(開発時推奨)
PHPキャッシュを有効にすると、一度コンパイルされたPHPコードがメモリ上にキャッシュされ、次回以降のアクセス時にコンパイル処理をスキップできるため、実行速度が向上します。本番環境では必ず有効にしておきましょう。display_errorsの設定は、PHPスクリプトにエラーがあった場合にブラウザ上にエラーメッセージを表示するかどうかを制御します。開発中やデバッグ時には有効にしておくと原因特定が容易になりますが、本番公開時はセキュリティ上の理由から無効にすることをおすすめします。
4. 「拡張」タブで必要な拡張を有効化
「拡張」タブに切り替えると、PHPで使用できる拡張機能の一覧が表示されます。WordPressやその他のPHPアプリケーションを動かす場合は、すべての拡張にチェックを入れておくと安心です。特に、MySQLやMariaDBに接続するためのmysqli、PDO_MySQL、画像処理に使うgd、JSON形式のデータを扱うjson、セッション管理に必要なsessionなどは、多くのアプリケーションで必須となります。どの拡張が必要かわからない場合は、とりあえず全選択しておけば、拡張不足による動作エラーを防げます。
5. 「保存」をクリック
設定が完了したら、画面下部の「保存」ボタンをクリックして変更を確定します。これでPHPプロファイルの設定は完了ですが、まだPHPは動作しません。次のステップが最も重要です。
STEP2:デフォルトサービスでPHPを有効化(★重要)
ここが最も重要なポイントです。PHPをインストールしただけでは「未構成」のままになっています。多くの方がこのステップを見落として「PHPが動かない」と悩むことになります。Web StationにおけるWebサービスとは、どのバックエンドサーバー(NginxやApache)を使い、どのPHPプロファイルでスクリプトを処理するかを定義した設定のことです。デフォルトサービスは、特別な設定をしていないアクセスすべてに適用される基本設定です。
1. Web Station → Webサービス
Web Stationの左側メニューから「Webサービス」をクリックします。ここには、現在設定されているWebサービスの一覧が表示されます。Web Stationをインストールした直後は「デフォルトサービス」のみが存在しているはずです。
2. 「デフォルトサービス」をダブルクリック
一覧に表示されている「デフォルトサービス」の行をダブルクリックして、設定画面を開きます。または、行を選択してから「編集」ボタンをクリックしても同様の画面が開きます。この設定画面で、WebサーバーとPHPの紐付けを行います。
3. 以下を設定
HTTPバックエンドサーバー:Nginx または Apache HTTP Server 2.4
PHP:Default Profile(PHP 8.2) ← ★ここが「未構成」になっていると動かない
HTTPバックエンドサーバーは、実際にHTTPリクエストを処理するWebサーバーソフトウェアを指定します。DSM7ではNginxがデフォルトでインストールされており、軽量で高速なため、通常はNginxを選択すれば問題ありません。そして最も重要なのがPHPの設定です。初期状態では「未構成」となっており、これがPHPが動作しない原因です。ドロップダウンメニューをクリックして、先ほど設定した「Default Profile(PHP 8.2)」を選択してください。
4. 「保存」をクリック
設定が完了したら「保存」ボタンをクリックします。これでWebサーバーとPHPの連携が有効になり、.phpファイルへのアクセス時にPHPエンジンが呼び出されるようになります。設定は即座に反映されるため、サービスの再起動などは不要です。

DSM6の記事を見ると「全般設定タブ」と書いてありますが、DSM7には存在しません。「Webサービス」→「デフォルトサービス」が正解です💡
STEP3:動作確認
PHPが正しく動作しているか確認します。設定が正しく完了していれば、PHPスクリプトが実行され、その結果がブラウザに表示されるはずです。確認にはphpinfo()関数を使用します。この関数は、PHPのバージョン、有効な拡張機能、設定値など、PHP環境に関する詳細な情報を一覧表示してくれる便利な診断ツールです。
1. File Stationで「web」フォルダを開く
DSMのメインメニューからFile Stationを起動し、共有フォルダの一覧を確認します。Web Stationをインストールすると、共有フォルダに「web」フォルダが自動作成されています。このフォルダがWebサーバーのドキュメントルートとなり、ここに配置したファイルがブラウザからアクセス可能になります。
2. テスト用PHPファイルを作成
以下の内容で「info.php」というファイルを作成し、webフォルダに保存します。テキストエディタ(メモ帳など)で作成してアップロードするか、File Stationの「作成」メニューからテキストファイルを新規作成してください。ファイル名は必ず「.php」という拡張子にしてください。
<?php
phpinfo();
?>
3. ブラウザでアクセス
http://[NASのIPアドレス]/info.php
例:http://192.168.1.100/info.php
Webブラウザを開き、上記のURLにアクセスします。NASのIPアドレスがわからない場合は、DSMのコントロールパネル→ネットワーク→ネットワークインターフェースで確認できます。正しく設定されていれば、紫色を基調としたPHP情報の画面が表示されます。PHPのバージョン、有効な拡張機能、各種設定値などが一覧で確認できるはずです。この画面が表示されれば、PHPは正常に動作しています。
4. テストファイルを削除
動作確認が完了したら、info.phpファイルは必ず削除してください。phpinfo()はサーバーのPHPバージョン、インストールパス、設定内容、有効な拡張機能など、サーバー環境に関する詳細情報を表示します。これらの情報が外部に公開されていると、攻撃者に悪用される可能性があります。確認が終わったらFile Stationからファイルを削除するか、ファイル名を変更して外部からアクセスできないようにしてください。
よくあるトラブルと対処法
設定手順通りに進めても、うまく動作しないことがあります。以下に、よくあるトラブルとその対処法をまとめました。エラーが発生した場合は、まずこの表を確認してみてください。原因の多くは、設定の見落としや権限の問題です。
| 症状 | 原因 | 対処法 |
|---|---|---|
| PHPコードがそのまま表示される | デフォルトサービスのPHPが「未構成」 | STEP2を実施 |
| 403 Forbidden | webフォルダの権限不足 | httpグループに読み書き権限を付与 |
| 500 Internal Server Error | PHP構文エラー、拡張不足 | エラーログ確認、拡張を有効化 |
| 拡張関数が使えない | 拡張機能が無効 | STEP1で拡張を有効化 |
500 Internal Server Errorが発生した場合は、PHPスクリプト自体に構文エラーがある可能性が高いです。また、使用しているPHP関数に必要な拡張機能が有効になっていないケースも考えられます。Web Stationのログや、NASのログセンターでエラーの詳細を確認してください。display_errorsを有効にしていれば、ブラウザ上にエラーの詳細が表示されることもあります。
webフォルダの権限設定
403 Forbiddenエラーが出る場合は、webフォルダの権限を確認します。Webサーバー(NginxやApache)は「http」というシステムグループの権限でファイルにアクセスします。このグループにwebフォルダへの読み取り権限がないと、ファイルが存在していてもアクセスが拒否されてしまいます。
1. File Station → webフォルダを右クリック → プロパティ
2. 「許可」タブを選択
3. 「http」グループに「読み込み」「書き込み」権限があることを確認
4. なければ追加して保存
権限を追加する際は、「作成」ボタンをクリックして「http」グループを検索し、必要な権限にチェックを入れて保存します。また、webフォルダ内にサブフォルダを作成した場合は、そのサブフォルダにも同様の権限が継承されているか確認してください。「このフォルダ、サブフォルダおよびファイルに適用」にチェックを入れることで、配下のすべてのファイルとフォルダに権限を一括適用できます。

Web Stationインストール直後は権限が設定されているはずですが、手動でフォルダを作成した場合は要確認です📁
DSM6との違いに注意
ネット検索で見つかる記事の多くはDSM6時代のものです。DSM7では画面構成が大きく変わっているため、古い記事を参考にすると設定場所が見つかりません。「全般設定」「PHP設定」といったタブを探しても、DSM7のWeb Stationには存在しないのです。
DSM7ではWeb Stationが大幅にリニューアルされ、より柔軟な設定が可能になりました。その反面、DSM6に慣れている方やDSM6向けの解説記事を参考にしている方は、設定項目の場所がわからず混乱することがあります。以下の対応表を参考に、DSM7での正しい設定場所を確認してください。
| 設定項目 | DSM6 | DSM7 |
|---|---|---|
| PHP設定 | 全般設定タブ | Webサービス → デフォルトサービス |
| PHP拡張 | PHP設定タブ | スクリプト言語の設定 → 編集 |
| 仮想ホスト | 仮想ホストタブ | Webサービスポータル |
特に注意が必要なのは、DSM6では「全般設定」タブでPHPバージョンを選択するだけでPHPが有効になりましたが、DSM7では「Webサービス」から「デフォルトサービス」を編集する必要がある点です。この違いを理解していないと、パッケージをインストールしても動かないという状況に陥ります。記事の公開日や対象DSMバージョンを確認し、DSM7向けの情報を参照するようにしてください。
よくある質問
Q. NginxとApacheどちらを選べばいい?
DSM7ではNginxがデフォルトでインストールされています。Nginxは軽量で高速、同時接続数が多い場合でもメモリ消費が少ないという特徴があります。特別な理由がなければNginxを選択すれば問題ありません。一方、Apacheには.htaccessファイルによるディレクトリ単位の設定変更ができるというメリットがあります。WordPressのパーマリンク設定やリダイレクト処理で.htaccessを使用したい場合はApacheを選択してください。ただし、Nginxでも設定ファイルを編集すれば同等の機能を実現できるため、必須というわけではありません。
Q. PHP 8.2と8.1どちらがいい?
新規構築なら8.2を推奨します。PHP 8.2は2022年12月にリリースされた比較的新しいバージョンで、セキュリティ修正とパフォーマンス改善が含まれています。WordPress、Laravel、その他主要なPHPフレームワークやCMSのほとんどがPHP 8.2に対応しています。既存のPHPアプリケーションを移行する場合は、そのアプリケーションの公式ドキュメントで対応バージョンを確認してください。古いアプリケーションの中にはPHP 8系に対応していないものもあり、その場合は7.4などの旧バージョンが必要になることがありますが、セキュリティリスクを考慮すると推奨できません。
Q. WordPressを動かすには他に何が必要?
WordPressはデータベースを使用するため、追加のパッケージが必要です。パッケージセンターから「MariaDB」(MySQLと互換性のあるデータベースサーバー)と「phpMyAdmin」(データベースをブラウザから管理するツール)をインストールしてください。MariaDBをインストールする際に、rootパスワードの設定を求められるので、忘れないようにメモしておきましょう。その後、phpMyAdminからWordPress用のデータベースとユーザーを作成し、WordPressのインストールを進めます。詳しい手順は別記事で解説予定です。
Q. 複数のWebサイトを運用できる?
はい、Web Stationの「Webサービスポータル」から仮想ホストを追加することで、1台のNASで複数のWebサイトを運用できます。設定方法は2種類あり、ポートベースと名前ベースがあります。ポートベースは、サイトごとに異なるポート番号を割り当てる方法です(例:サイトAは80番ポート、サイトBは8080番ポート)。名前ベースは、同じポート番号でもドメイン名やホスト名で振り分ける方法です(例:site-a.localとsite-b.localで別々のサイトにアクセス)。名前ベースを使用する場合は、DNSサーバーの設定やhostsファイルの編集が必要になります。社内の開発環境として複数プロジェクトを同時に動かしたい場合に便利な機能です。
まとめ
| 項目 | 内容 |
|---|---|
| 必要パッケージ | Web Station、PHP 8.2 |
| 重要な設定箇所 | Webサービス → デフォルトサービス → PHPを選択 |
| 動作確認 | webフォルダにinfo.phpを作成してアクセス |
| 注意点 | DSM6の記事は参考にしない(画面構成が異なる) |
DSM7でPHPを動かすポイントは「デフォルトサービスのPHP設定を未構成から変更する」ことです。パッケージをインストールしただけでは動かないので注意してください。この設定さえ行えば、あとは一般的なWebサーバーと同じようにPHPアプリケーションを動かすことができます。
Synology NASは、ファイルサーバーとしてだけでなく、社内向けWebアプリケーションのホスティング環境としても優秀です。WordPressで社内ポータルを構築したり、独自のPHPツールを動かしたり、活用の幅が広がります。月額費用のかかるレンタルサーバーを契約せずに、手元のNASでWebサーバーを運用できるのは大きなメリットです。

設定自体は5分で終わります。古い情報に惑わされず、この手順でサクッと設定してください👍


コメント