Ubuntu 20.04 上的 CodeIgniter 4

Ubuntu 20.04 上的 CodeIgniter 4

我已将 ci4 应用程序安装在 /var/www/html/app 目录中。然后在 /etc/apache2/sites-available 目录中创建 codeigniter.conf 文件并写入以下代码

 ***

<VirtualHost *:80>
         ServerAdmin [email protected]
         DocumentRoot /var/www/html/app/public
         ServerName myciapp.local
         <Directory /var/www/html/app/public>
             Options +FollowSymLinks
             AllowOverride All
             Order allow,deny
             allow from all
        </Directory>
        ErrorLog /var/log/apache2/codeigniter-error_log
        CustomLog /var/log/apache2/codeigniter-access_log common
    </VirtualHost>

接下来添加主机 127.0.0.1 myciapp.local 运行以下命令

sudo a2ensite codeigniter
sudo a2enmod rewrite
sudo systemctl restart apache2

接下来,我在 .env 文件中将 app.baseurl 设置为“http://myciapp.local”,并在浏览器中打开相同的 url。它给出了错误“SYSTEMPATH/Cache/Handlers/FileHandler.php at line 69”,因此我使用 chmod 命令授予 html 和 writeable/cache 目录的重写权限

之前这些权限浏览器会显示错误消息,但现在它只显示一个空白页。如果我从配置文件中的 DocumentRoot 和 Directory 指令中删除 public,它会暴露我的文件夹结构。现在下一步该怎么做才能运行我的应用程序?

codeigniter-error_log 已生成以下错误日志

[Sun Mar 07 00:06:19.268444 2021] [php7:error] [pid 14965] [client 127.0.0.1:33750] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/www/html/app/vendor/codeigniter4/framework/system/View/View.php on line 255, referer: http://myciapp.local/

[Sun Mar 07 00:06:19.268840 2021] [php7:error] [pid 14965] [client 127.0.0.1:33750] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 32768 bytes) in /var/www/html/app/vendor/codeigniter4/framework/system/Log/Handlers/FileHandler.php on line 1, referer: http://myciapp.local/

[Sun Mar 07 00:06:19.269053 2021] [php7:error] [pid 14965] [client 127.0.0.1:33750] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 49152 bytes) in Unknown on line 0, referer: http://myciapp.local/

答案1

您的应用正在尝试使用超出可用内存量的内存:

允许的内存大小 134217728 字节已用尽(尝试分配 20480 字节)

134,217,728 字节超过 128 MB,对于 PHP 页面来说,这已经相当大了。您需要精简您的应用。使用像 CodeIgniter 这样的 MVC 框架,问题通常在于从数据库加载数据。不要总是加载所有内容,只需加载您真正需要的内容。您还需要保留N+1问题心里。

此外,您还需要检查应用处理大量数据的所有地方,例如处理图像。

相关内容