• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Unnecessary Files Loaded in Production Environment - Codeigniter 4.1.1

#1
Star 
Hi,
Mostly I have been using CI without composer by directly downloading. Today I wanted to add TWIG so I decided to use composer. 
To my surprise the number of loaded files increased by 25 even in PRODUCTION environment. 

I am sure I dont need Kint in production & as I am not hosting my app on multiple PHP versions so I dont need POLYFILL as well. I also dont need many other needlessly loaded files as shown below.

Kindly advise how to disable their autoloading in Production Environment?

Following is list of files as mentioned above:

 - D:\dev\vendor\symfony\polyfill-php80\bootstrap.php
 - D:\dev\vendor\phpstan\phpstan\bootstrap.php
 - D:\dev\vendor\symfony\polyfill-ctype\bootstrap.php
 - D:\dev\vendor\phpunit\phpunit\src\Framework\Assert\Functions.php
 - D:\dev\vendor\symfony\deprecation-contracts\function.php
 - D:\dev\vendor\symfony\polyfill-mbstring\bootstrap.php
 - D:\dev\vendor\symfony\polyfill-php73\bootstrap.php
 - D:\dev\vendor\symfony\var-dumper\Resources\functions\dump.php
 - D:\dev\vendor\symfony\polyfill-intl-grapheme\bootstrap.php
 - D:\dev\vendor\symfony\polyfill-intl-normalizer\bootstrap.php
 - D:\dev\vendor\laminas\laminas-zendframework-bridge\src\autoload.php
 - D:\dev\vendor\laminas\laminas-zendframework-bridge\src\Autoloader.php
 - D:\dev\vendor\laminas\laminas-zendframework-bridge\src\RewriteRules.php
 - D:\dev\vendor\myclabs\deep-copy\src\DeepCopy\deep_copy.php
 - D:\dev\vendor\phpseclib\phpseclib\phpseclib\bootstrap.php
 - D:\dev\vendor\symfony\string\Resources\functions.php
 - D:\dev\app\Config\Kint.php
 - D:\dev\vendor\kint-php\kint\init.php
 - D:\dev\vendor\kint-php\kint\src\Kint.php
 - D:\dev\vendor\kint-php\kint\src\Utils.php
 - D:\dev\vendor\kint-php\kint\init_helpers.php
 - D:\dev\vendor\kint-php\kint\src\Renderer\Renderer.php
 - D:\dev\vendor\kint-php\kint\src\Renderer\RichRenderer.php
 - D:\dev\vendor\kint-php\kint\src\Renderer\CliRenderer.php
 - D:\dev\vendor\kint-php\kint\src\Renderer\TextRenderer.php
Reply

#2
Try
Code:
composer install --no-dev
Reply

#3
Code:
composer install --no-dev
composer update --no-dev
composer require package/name --update-no-dev
Reply

#4
(02-20-2021, 09:25 PM)iRedds Wrote:
Code:
composer install --no-dev
composer update --no-dev
composer require package/name --update-no-dev

It means PRODUCTION environment option in .env file is useless?

So it means I have to keep 2 copies, 1 for local development & 1 for production?

Cant I just comment the relevant lines in composer autoload file in production?
Reply

#5
(02-21-2021, 06:06 AM)myo Wrote: It means PRODUCTION environment option in .env file is useless?

So it means I have to keep 2 copies, 1 for local development & 1 for production?

Cant I just comment the relevant lines in composer autoload file in production?

The .env file only affects the application.
You can run composer with the keys listed above on the production server.
No second copy is required.

If you mean composer.json, then it doesn't support comments.
If we are talking about files generated by the composer, the files will be recreated upon update / add / remove.
Reply

#6
Assuming you're using Docker, the composer commands listed above should be part of your Dockerfile, and you don't need to include the vendor folder in the image.
Reply

#7
(02-21-2021, 08:48 PM)ojmichael Wrote: Assuming you're using Docker, the composer commands listed above should be part of your Dockerfile, and you don't need to include the vendor folder in the image.

No I am not using Docker

(02-21-2021, 03:34 PM)iRedds Wrote:
(02-21-2021, 06:06 AM)myo Wrote: It means PRODUCTION environment option in .env file is useless?

So it means I have to keep 2 copies, 1 for local development & 1 for production?

Cant I just comment the relevant lines in composer autoload file in production?

The .env file only affects the application.
You can run composer with the keys listed above on the production server.
No second copy is required.

If you mean composer.json, then it doesn't support comments.
If we are talking about files generated by the composer, the files will be recreated upon update / add / remove.
Still after composer update --no-dev and running in Production Environment I still found following files included.
So Kint Polyfill is not going away ! 

 - D:\dev\vendor\laminas\laminas-zendframework-bridge\src\autoload.php
 - D:\dev\vendor\laminas\laminas-zendframework-bridge\src\Autoloader.php
 - D:\dev\vendor\laminas\laminas-zendframework-bridge\src\RewriteRules.php
 - D:\dev\vendor\phpseclib\phpseclib\phpseclib\bootstrap.php
 - D:\dev\vendor\symfony\polyfill-ctype\bootstrap.php
 - D:\dev\vendor\symfony\polyfill-mbstring\bootstrap.php
 - D:\dev\vendor\kint-php\kint\init.php
 - D:\dev\vendor\kint-php\kint\src\Kint.php
 - D:\dev\vendor\kint-php\kint\src\Utils.php
 - D:\dev\vendor\kint-php\kint\init_helpers.php
 - D:\dev\vendor\kint-php\kint\src\Renderer\Renderer.php
 - D:\dev\vendor\kint-php\kint\src\Renderer\RichRenderer.php
 - D:\dev\vendor\kint-php\kint\src\Renderer\CliRenderer.php
 - D:\dev\vendor\kint-php\kint\src\Renderer\TextRenderer.php
Reply

#8
How about this?

Remove the line "kint-php/kint": "^3.3", in composer.json.
And run `composer update --no-dev`.
Reply

#9
kint-php and laminas these are the framework dependencies

"kint-php/kint": "^3.3",
"laminas/laminas-escaper": "^2.6" => laminas/laminas-zendframework-bridge
Reply

#10
Kint and Laminas are needed dependencies. Removing those will make CI4 break. In `system/CodeIgniter.php` there is a whole method dedicated to initialize Kint, so don't meddle with that. As for symfony polyfills and phpseclib, they may be needed dependencies of those two. So removing those will break those two dependencies and in turn break CI4 ultimately.
Reply


Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2021 MyBB Group.