-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[6.0] Configure Joomla with environment variables #44894
Conversation
a62b167
to
4982dca
Compare
Nice one! One suggestion probably another array with key the JConfig key and value 1 if the value comes from the php file or 0 if the value comes from the env. the reason is that then in the admin configuration the form could check if each input is editable ie coming from the php file (or not ie coming from the env and then add a readonly attribute). |
@dgrammatiko, to check if the config value came from environment we can use the /** @var Registry */
$envsConfig = $container->get('envs_config');
if ($envsConfig->has('debug')) {
// 'debug' came from environment
} |
4982dca
to
b3f9689
Compare
Thanks for the pr. It's a nice idea. For me it is a bit too complex. Probably moving the loadEnvs function to the Config service provider is enough. No need to introduce a storage class with static functions. |
@laoneo, without storage and static methods we can't set |
Then load them manually in the respective files. |
@laoneo, I've added the changes you requested. |
e9ea1bc
to
9ff99f4
Compare
…ring) of type string is deprecated (joomla#44876)
Just an update here, before you spend more time on it. We are discussing this in the maintainers team if it fits into our current setup. There are are already other ways to customize the config, so this would be another one. |
I have tested this item 🔴 unsuccessfully on 2466eae This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/44894. |
I have tested this item 🔴 unsuccessfully on 2466eae Steps Followed for Testing:
Issue Observed:
Expected Behavior:
Actual Behavior:
Additional Notes:
This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/44894. |
I have tested this item ✅ successfully on 2466eae After correctly applying the patch and retesting, here are my updated findings: Tested on: Joomla! 5.3-dev Steps Followed for Testing:
Issue Observed:
Expected Behavior & Actual Behavior are same:
Additional Notes:
Final Result:
This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/44894. |
The `CYPRESS_CACHE_FOLDER` environment variable must be set within the `sudo` command.
* [Cypress] PHP Backend Notice com_media/Files.cy.js Fixing all Joomla backend PHP notices from Cypress test file `api/com_media/Files.cy.js` and doing some refactoring. Fixed PHP notices are: ``` [Sat Feb 22 18:28:44.019593 2025] [php:notice] [pid 31:tid 31] [client 10.0.0.1:64714] PHP Notice: exif_imagetype(): Error reading from /var/www/html/files/test-image-1.jpg! in /var/www/html/libraries/src/Helper/MediaHelper.php on line 93 [Sat Feb 22 18:28:44.022074 2025] [php:notice] [pid 31:tid 31] [client 10.0.0.1:64714] PHP Notice: getimagesize(): Error reading from /var/www/html/files/test-image-1.jpg! in /var/www/html/libraries/src/Image/Image.php on line 177 [Sat Feb 22 18:28:44.258619 2025] [php:notice] [pid 31:tid 31] [client 10.0.0.1:64714] PHP Notice: exif_imagetype(): Error reading from /var/www/html/files/test-dir/test-image-1-subfolder.jpg! in /var/www/html/libraries/src/Helper/MediaHelper.php on line 93 [Sat Feb 22 18:28:44.259092 2025] [php:notice] [pid 31:tid 31] [client 10.0.0.1:64714] PHP Notice: getimagesize(): Error reading from /var/www/html/files/test-dir/test-image-1-subfolder.jpg! in /var/www/html/libraries/src/Image/Image.php on line 177 [Sat Feb 22 18:28:47.177357 2025] [php:notice] [pid 31:tid 31] [client 10.0.0.1:64714] PHP Notice: exif_imagetype(): Error reading from /var/www/html/files/test-dir/todelete.jpg! in /var/www/html/libraries/src/Helper/MediaHelper.php on line 93 [Sat Feb 22 18:28:47.178099 2025] [php:notice] [pid 31:tid 31] [client 10.0.0.1:64714] PHP Notice: getimagesize(): Error reading from /var/www/html/files/test-dir/todelete.jpg! in /var/www/html/libraries/src/Image/Image.php on line 177 [Sat Feb 22 18:28:47.564807 2025] [php:notice] [pid 31:tid 31] [client 10.0.0.1:64714] PHP Notice: exif_imagetype(): Error reading from /var/www/html/images/test-dir/todelete.jpg! in /var/www/html/libraries/src/Helper/MediaHelper.php on line 93 [Sat Feb 22 18:28:47.565288 2025] [php:notice] [pid 31:tid 31] [client 10.0.0.1:64714] PHP Notice: getimagesize(): Error reading from /var/www/html/images/test-dir/todelete.jpg! in /var/www/html/libraries/src/Image/Image.php on line 177 ``` All 8 x PHP notices are fixed. Instead of using 1-Byte files real images are used from Cypress fixtures. Please consider there are still 4 x PHP warning to be fixed (I assume they need to be fixed in PHP API backend code) from `api/com_media/Files.cy.js` and more warnings and notices in the overall Joomla System Tests. Some refactoring: * Deleted 3 images in `tests/System/data/com_media`, 2 are not used and Cypress default is to use `fixtures` folder * The image file names are counted through and the images show name and path in different colors. * Second `test-dir` was named `test-dir2` to distinguish clearly. * `afterEach()` is reduced to `after()`, as it is only a clean-up and not needed to execute the tests. * The last 4 tests can use the prepared files too, as with `beforeEach` the files are restored before each test. * Corrected Image Description to test-dir2 Used command: ``` convert -size 100x100 -gravity center -pointsize 11 xc:lightgreen -fill red -annotate +0+0 'Joomla\nSystem Tests\n\nimages/test-dir2\ntest-image-3.jpg' tests/System/fixtures/com_media/test-image-3.jpg ``` * Fix for Windows Path and Read-Only Overwrites - Creating relative fixtures folder path now also works on Windows with backslashes as separators and a drive letter - All overwrite files are now created with explicit read-write 0o666, as the default 0o444 creates read-only files, leading to PHP Warnings `Failed to open` --------- Co-authored-by: Allon Moritz <allon.moritz@digital-peak.com> Co-authored-by: Robert Deutz <rdeutz@googlemail.com>
Co-authored-by: Richard Fath <richard67@users.noreply.github.com>
… channel or stability options (joomla#44954)
# JOOMLA_OFFLINE=1 | ||
# JOOMLA_SITENAME='Joomla!' | ||
# | ||
# All available configuration values are listed in installation/configuration.php-dist. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is it ok to reference this file as it is removed once a site has been installed? Should it maybe refer to a documentation page that is always available?
Co-authored-by: Brian Teeman <brian@teeman.net>
This pull request has been automatically rebased to 6.0-dev. |
I accidentally removed the branch while rebasing and the PR closed automatically. I will try to figure out how to reopen it later. |
Pull Request for Issue #36898.
Summary of Changes
This PR adds an ability to configure Joomla using environment variables. To do this, the config provider has been changed to load all environment variables whose names start with
JOOMLA_
(e.g.JOOMLA_DEBUG
,JOOMLA_PASSWORD
) and merge them into theconfig
service.Also, environment variables can be loaded from
.env
files, thankfully to symfony/dotenv.Testing Instructions
Create
.env
file in the site's root directorySet environment variables (inside the
.env
file):Reload site's home page and ensure that site is offline and the
Joomla!
message is shownRun the following command and ensure that the output is
true
:Run the following command and ensure that the output is
Joomla!
:Actual result BEFORE applying this Pull Request
All should work.
Expected result AFTER applying this Pull Request
All should work.
Link to documentations
Please select:
Documentation link for docs.joomla.org:
No documentation changes for docs.joomla.org needed
Pull Request link for manual.joomla.org:
No documentation changes for manual.joomla.org needed
Why?
The 12-factor app methodology recommends to store config in the environment.
Also, it makes Joomla more cloud-friendly and simplifies running it inside containers.
For example, using environment variables it's very easy to configure separate database for testing: