5.0.11で PHP Fatal error: Allowed memory size~エラーが出てしまう

数回、再インストールを試しました…

xdebugを無効にした状態でも
http://127.0.0.1:4080/webroot/index.php
でアクセスした後は
http://127.0.0.1:4080/でもアクセス出来ることが確認できました。

よくわかってないので
IISのドキュメントルートをD:\website\iis\test4とすると

D:\website\iis\test4\index.phpの

require 'webroot' . DIRECTORY_SEPARATOR . 'index.php';

 ↓↓↓

//require 'webroot' . DIRECTORY_SEPARATOR . 'index.php';
header("Location: /webroot/index.php");
※タダのリダイレクト

とするか

Web.configのリライトを

        <rewrite>
            <rules>
                <clear />
                <rule name="Imported Rule 3" stopProcessing="true">
                    <match url="^$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll" />
                    <action type="Rewrite" url="/" />
                </rule>
                <rule name="Imported Rule 4" stopProcessing="false">
                    <match url="(.*)" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll" />
                    <action type="Rewrite" url="/webroot/{R:1}" />
                </rule>
                <rule name="Imported Rule 5" stopProcessing="true">
                    <match url="^/webroot/(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
                    </conditions>
                    <action type="Rewrite" url="webroot/index.php" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>

  ↓↓↓

        <rewrite>
            <rules>
                <clear />
                <rule name="Imported Rule 3" stopProcessing="true">
                    <match url="^$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll" />
                    <action type="Rewrite" url="/webroot/" />
                </rule>
                <rule name="Imported Rule 4" stopProcessing="false">
                    <match url="(.*)" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll" />
                    <action type="Rewrite" url="/webroot/{R:1}" />
                </rule>
                <rule name="Imported Rule 5" stopProcessing="true">
                    <match url="^/webroot/(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
                    </conditions>
                    <action type="Rewrite" url="webroot/index.php" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>

※Rule 3を変えただけ

で逃げれるのですが、何故基本通りでうまくいかないのは、まだ理解出来てない…

@bon 色々と確認ありがとうございます。IISのRewriteに原因がありそうですね。

実は、本体に同梱していた web.default.config ですが、baserCMS5の開発において動作確認ができていなかったようです。

CakePHP4のドキュメントを確認したところ、の内容が変わっていたのですが、こちらで一度試して頂いてもよろしいでしょうか?

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Exclude direct access to webroot/*" stopProcessing="true">
                    <match url="^webroot/(.*)$" ignoreCase="false" />
                    <action type="None" />
                </rule>
                <rule name="Rewrite routed access to assets(img, css, files, js, favicon)" stopProcessing="true">
                    <match url="^(font|img|css|files|js|favicon.ico)(.*)$" />
                    <action type="Rewrite" url="webroot/{R:1}{R:2}" appendQueryString="false" />
                </rule>
                <rule name="Rewrite requested file/folder to index.php" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <action type="Rewrite" url="index.php" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

ドキュメントはこちら
https://book.cakephp.org/4/ja/installation.html#iis7-windows-hosts

こちらで問題なければ、baserCMSの本体の web.default.config もこちらに書き換えたいと思います。

@bon お手数おかけしてすみません、当方環境がMacで、IISの環境をすぐに準備するのが難しく。

@ryuring
うまくいった環境とうまくいかない環境がありました。
もう一度、作り直してテストしてみますので、もうしばらくお待ちください。

BaserCMSが正しくインストール出来なくなりました。
関係するかどうか分かりませんが、composerのself-updateとその後のコマンドで以下のメッセージが出るようになりました。

A script named install would override a Composer command and has been skipped
Composer could not detect the root package (baserproject/basercms) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version

@ryuring さん
解決したかも。
「うまくいった環境とうまくいかない環境がありました。」とお伝えした後でちょっとやな予感があったので、少し検証しました。

・web.configは新版を使用
・Baser5.0.11
・PHP8.1.27でインストールしました。

結果は以下の通り

PHP 8.1.27でインストールを実施
・トップページは正常に表示される

そのまま PHP を 8.2.17に変更
・トップページは正常に表示される

そのまま PHP を 8.3.3に変更
・トップページは500番エラー

そのまま PHP を 8.3.4に変更
・トップページは正常に表示される

そのまま もう一度 PHP を 8.3.3に変更
・トップページは500番エラー

そのまま もう一度 PHP を 8.1.27に変更
・トップページは正常に表示される

そのまま もう一度 PHP を 8.3.3に変更
・トップページは500番エラー

そのまま もう一度 PHP を 8.3.4に変更
・トップページは正常に表示される

ちなみに8.3.3でもxdebugを有効にすると正常表示されます。

https://www.php.net/ChangeLog-8.php#8.3.4

#PHP8.3.3のせいなのでしょうか?
#もしそうなら、気がつかんって :sob:

検証ありがとうございます。
現在、残念ながらPHP8.3系は未検証です:sweat_smile:
8.1 と 8.2 で正常動作したということでしたので、web.default.config は提示させて頂いたものでコミットしたいと思います。