我已将 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问题心里。
此外,您还需要检查应用处理大量数据的所有地方,例如处理图像。