質問編集履歴

3

app.phpのwebrootの値を変更すると意図する動きになったことを追記

2020/11/25 06:50

投稿

smnsmn
smnsmn

スコア175

test CHANGED
File without changes
test CHANGED
@@ -302,7 +302,15 @@
302
302
 
303
303
  `app.php`についてはデフォルトのままです。
304
304
 
305
- `'webroot' => 'webroot'`←がそのままなのでそこがだめなのでしょうか・・・
305
+ ~~`'webroot' => 'webroot'`←がそのままなのでそこがだめなのでしょうか・・・~~
306
+
307
+ ⇒試しに`'webroot' => 'contact'`にしてみたところ、/contact/indexでアクセスできました。
308
+
309
+ (ここに各webrootの値をどう設定するかはまだ分かっていません。)
310
+
311
+
312
+
313
+ 以下、app.php
306
314
 
307
315
  ```php
308
316
 

2

修正依頼についての補足を追記

2020/11/25 06:50

投稿

smnsmn
smnsmn

スコア175

test CHANGED
File without changes
test CHANGED
@@ -163,3 +163,193 @@
163
163
  もし、分かる方がいらっしゃいましたら、ご教授頂けると幸いです。
164
164
 
165
165
  よろしくお願い致します。
166
+
167
+  
168
+
169
+
170
+
171
+ #【追記】
172
+
173
+ 修正依頼をいただきましたので、以下補足を追記いたします。
174
+
175
+
176
+
177
+ ##何のためにContactsとMypageでwebrootを分けているのか?
178
+
179
+ これは静的ページとCakePHPのページを混在させているためです。
180
+
181
+ `/mysite/public_html/以下`にCakePHP以外の静的ページを公開しており、そことディレクトリ構造を合わせています。
182
+
183
+ CakePHP以外の静的ページを表示するため、ドキュメントルートが`/mysite/public_html/`になっています。
184
+
185
+  
186
+
187
+ 下記のツリーで言うと、★で追加したgalleryやdownloadのように、CakePHPではないディレクトリがあります。
188
+
189
+ さらに、mypageの下にさらに別のwebrootがあるパターンも存在します。
190
+
191
+
192
+
193
+ とはいえ、この構造を作ったのが私自身ではないため、その真意は私も理解しきれていません。申し訳ありません。
194
+
195
+
196
+
197
+ ```
198
+
199
+ mysite/
200
+
201
+   ∟config/
202
+
203
+   ∟src/
204
+
205
+     ∟Controller/
206
+
207
+       ∟ContactsController.php
208
+
209
+       ∟MypagesController.php
210
+
211
+   ∟vendor/
212
+
213
+   ∟public_html/
214
+
215
+     ∟contact/(CakePHPのwebroot)
216
+
217
+       ∟index.php
218
+
219
+       ∟.htaccess
220
+
221
+     ∟mypage/(CakePHPのwebroot)
222
+
223
+       ∟index.php
224
+
225
+       ∟.htaccess
226
+
227
+ ∟setting/(★さらに深い階層のwebroot)
228
+
229
+         ∟index.php
230
+
231
+         ∟.htaccess
232
+
233
+     ∟gallery/(★静的ページ)
234
+
235
+       ∟about.html
236
+
237
+       ∟list.html
238
+
239
+     ∟download/(★静的ページ)
240
+
241
+       ∟index.html
242
+
243
+
244
+
245
+ ```
246
+
247
+
248
+
249
+
250
+
251
+ ## 補足ファイル
252
+
253
+
254
+
255
+ 各index.phpで`WWW_ROOT`を定義しています。
256
+
257
+ ```php
258
+
259
+ // /mysite/public_html/contact/index.php
260
+
261
+ if (!defined('DS')) {
262
+
263
+ define('DS', DIRECTORY_SEPARATOR);
264
+
265
+ }
266
+
267
+ define('WWW_ROOT', __DIR__ . DS);
268
+
269
+
270
+
271
+ // 以下はデフォルトの記述
272
+
273
+ // Bind your application to the server.
274
+
275
+ $server = new Server(new Application(dirname(dirname(__DIR__)) . '/config'));
276
+
277
+
278
+
279
+ // Run the request/response through the application and emit the response.
280
+
281
+ $server->emit($server->run());
282
+
283
+ ```
284
+
285
+  
286
+
287
+ index.phpで`WWW_ROOT`を定義しているので、`paths.php`は以下のようにしています。
288
+
289
+ ```php
290
+
291
+ // /mysite/config/paths.php
292
+
293
+ if (!defined('WWW_ROOT')) {
294
+
295
+ define('WWW_ROOT', ROOT . DS . 'webroot' . DS);
296
+
297
+ }
298
+
299
+ ```
300
+
301
+  
302
+
303
+ `app.php`についてはデフォルトのままです。
304
+
305
+ `'webroot' => 'webroot'`←がそのままなのでそこがだめなのでしょうか・・・
306
+
307
+ ```php
308
+
309
+ // /mysite/config/app.php
310
+
311
+ 'App' => [
312
+
313
+ 'namespace' => 'App',
314
+
315
+ 'encoding' => env('APP_ENCODING', 'UTF-8'),
316
+
317
+ 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
318
+
319
+ 'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'),
320
+
321
+ 'base' => false,
322
+
323
+ 'dir' => 'src',
324
+
325
+ 'webroot' => 'webroot',
326
+
327
+ 'wwwRoot' => WWW_ROOT,
328
+
329
+ //'baseUrl' => env('SCRIPT_NAME'),
330
+
331
+ 'fullBaseUrl' => false,
332
+
333
+ 'imageBaseUrl' => 'img/',
334
+
335
+ 'cssBaseUrl' => 'css/',
336
+
337
+ 'jsBaseUrl' => 'js/',
338
+
339
+ 'paths' => [
340
+
341
+ 'plugins' => [ROOT . DS . 'plugins' . DS],
342
+
343
+ 'templates' => [APP . 'Template' . DS],
344
+
345
+ 'locales' => [APP . 'Locale' . DS],
346
+
347
+ ],
348
+
349
+ ],
350
+
351
+
352
+
353
+
354
+
355
+ ```

1

原因についての状況説明を追加

2020/11/25 06:34

投稿

smnsmn
smnsmn

スコア175

test CHANGED
@@ -1 +1 @@
1
- 【CakePHP3】webrootを変更するとMissing Controllerになる
1
+ 【CakePHP3】Missing Controllerになる(Documentrootとwebrootが異なる場合の対処方法について)
test CHANGED
@@ -20,7 +20,11 @@
20
20
 
21
21
 
22
22
 
23
+ Apacheで設定しているDocumentrootと、CakePHPのwebrootの場所が違います。
24
+
25
+
26
+
23
- ドキュメントルート:`/mysite/public_html`
27
+ Documentroot:`/mysite/public_html`
24
28
 
25
29
  CakePHPのwebroot:`/mysite/public_html/contact`
26
30
 
@@ -77,6 +81,8 @@
77
81
  `http://example.com/contact/contact/index`にアクセスした場合は正常にページが表示されます。
78
82
 
79
83
 
84
+
85
+ Apacheで設定しているDocumentrootと、CakePHPのwebrootの場所が違うのが原因だと思っています。
80
86
 
81
87
 
82
88