質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

Q&A

0回答

818閲覧

Slimを使ったアプリで、本番サーバーにデプロイしたところ404が返される

jackhase

総合スコア22

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

0グッド

0クリップ

投稿2020/08/27 13:59

編集2020/08/27 14:01

困っていること

XREA FREEを利用して、Slimで作成したアプリケーションをデプロイしたのですが、404が返されてしまいます。
ローカル上でビルトインサーバーを立ててアクセスすると正常にレスポンスは返されています。

もし過去に同じレンタルサーバーを使ってSlimのアプリをデプロイしたことがある方や、原因が分かる方がいらっしゃれば、ご教示いただきたく思います。

試したこと

slimのディレクトリ構造
・public
ーindex.php

1:ローカル環境での動作確認

フロントコントローラー(index.php)の階層ででビルトインサーバーを立てて、「localhost:8000/」でアクセスすると正常にコンテンツが表示される。

2:本番環境での動作確認
ドキュメントルート(public_html)の2階層下(階層2)にslimを配置し、「http://ホスト名/階層1/階層2/public/」でアクセスすると、Slimによって

{ "statusCode": 404, "error": { "type": "RESOURCE_NOT_FOUND", "description": "Not found." } }

が返されます。(これがjsonが返されるということはslimそのものは動作しているはず...)

※アクセスしているURL(http://ホスト名/階層1/階層2/public/)が間違っているか、.htaccsessの記述がおかしいかのどちらかかと思っているのですが原因がわかりません...。

もしくはサーバーからcomposerインストールせずに、プロジェクトをそのまま直接アップロードしたことが原因でしょうか...(autoload.phpへのパスは通してslim自体は正常に動作してるっぽいです)

環境

本番環境
PHP7.2
CentOS 7.5
Apache/2.4.6
以下.htaccsess(デフォルトの記述)

<IfModule mod_rewrite.c> RewriteEngine On # Some hosts may require you to use the `RewriteBase` directive. # Determine the RewriteBase automatically and set it as environment variable. # If you are using Apache aliases to do mass virtual hosting or installed the # project in a subdirectory, the base path will be prepended to allow proper # resolution of the index.php file and to redirect to the correct URI. It will # work in environments without path prefix as well, providing a safe, one-size # fits all solution. But as you do not need it in this case, you can comment # the following 2 lines to eliminate the overhead. RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ RewriteRule ^(.*) - [E=BASE:%1] # If the above doesn't work you might need to set the `RewriteBase` directive manually, it should be the # absolute physical path to the directory that contains this htaccess file. # RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] </IfModule>

ローカル環境
PHP7.1
centOS6
Apache/2.2.15

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2020/08/31 06:39

とりあえずやってみたけど動きましたよ。phpは7.4にして、composer.pharから構築しています。 hello, worldですが、、、 https://dameo.shop/slim_test/hoge.php/hello/hoge 設定はphpを7.4にした以外はデフォルトのままです。
jackhase

2020/09/16 15:31 編集

ディレクトリ構造と.htaccsessの内容を教えていただけませんか?
dameo

2020/09/16 15:38 編集

[dameo slim_test]$ ls -lAF ~/bin 合計 811 -rwxr-xr-x 1 dameo hpusers 1994170 8月 31 15:14 composer.phar* [dameo slim_test]$ php74cli composer.phar require slim/slim:3.* ... [dameo slim_test]$ cat hoge.php <?php use \Psr\Http\Message\ServerRequestInterface as Request; use \Psr\Http\Message\ResponseInterface as Response; require './vendor/autoload.php'; $app = new \Slim\App; $app->get('/hello/{name}', function (Request $request, Response $response, array $args) { $name = $args['name']; $response->getBody()->write("<html lang=\"ja\"><head></head><body>Hello, $name</body></html>"); return $response; }); $app->run(); [dameo slim_test]$
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問