Open jasonevines opened 2 years ago
@jasonevines any chance the solution to #136 helped with this?
I tried that, but it didn't help. This is still a problem.
I've reached out to Platform.sh, and their engineers are placing responsibility for Apple Silicon problems on Lando.
Any chance progress has been made on this?
@jasonevines I think I've replicated your issue after talking with another user on the Lando Slack.
When I look at the logs for the appserver container on my install, I see these error messages which seem like the crux of the issue. If you open the logs for the appserver within Docker Desktop, do you see something similar on your failed start, particularly something like that Exception: Extension '{'configuration': {}, 'name': u'redis'}' is unknown.
line?
2022-02-23 22:10:58,621 platformsh.agent ERROR Error in service config.py:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/platformsh/agent/__init__.py", line 33, in log_and_load
yield load()
File "/etc/platform/start", line 6, in <module>
service.start()
File "/usr/lib/python2.7/dist-packages/platformsh_app/service.py", line 410, in start
self.generate_application_environment(app)
File "/usr/lib/python2.7/dist-packages/platformsh_app/service.py", line 576, in generate_application_environment
self.generate_application_configuration(app)
File "/usr/lib/python2.7/dist-packages/platformsh_app_php/__init__.py", line 235, in generate_application_configuration
extension = _validate_extension(extension)
File "/usr/lib/python2.7/dist-packages/platformsh_app_php/__init__.py", line 208, in _validate_extension
raise Exception("Extension '%s' is unknown." % extension)
Exception: Extension '{'configuration': {}, 'name': u'redis'}' is unknown.
Traceback (most recent call last):
File "/etc/platform/start", line 6, in <module>
service.start()
File "/usr/lib/python2.7/dist-packages/platformsh_app/service.py", line 410, in start
self.generate_application_environment(app)
File "/usr/lib/python2.7/dist-packages/platformsh_app/service.py", line 576, in generate_application_environment
self.generate_application_configuration(app)
File "/usr/lib/python2.7/dist-packages/platformsh_app_php/__init__.py", line 235, in generate_application_configuration
extension = _validate_extension(extension)
File "/usr/lib/python2.7/dist-packages/platformsh_app_php/__init__.py", line 208, in _validate_extension
raise Exception("Extension '%s' is unknown." % extension)
Exception: Extension '{'configuration': {}, 'name': u'redis'}' is unknown.
run-parts: /scripts/001-boot-platformsh exited with return code 1
Also note that the user I spoke to on Slack was on an Intel Mac, so I don't think this is actually an M1-specific issue.
Temporary Workaround
Disabling the redis extension on Lando will resolve this issue; obviously that means you won't have redis locally, but unless you're doing some special redis-specific things, that likely won't be a blocker. Add an overrides
section to your .lando.yml that does not include redis
. Here's a simple sample Landofile...in this case I'll be installing xdebug and overriding the extensions in my .platform.app.yaml:
name: platformsh-wordpress-vanilla
recipe: platformsh
tooling:
wp:
service: app
overrides:
app:
runtime:
extensions:
- xdebug
Relevant section in docs, read through that and it'll make sense: https://docs.lando.dev/config/platformsh.html#xdebug
I'm on macOS Intel, Wordpress
Some additional information from my testing... when I have these extensions in my .platform.app.yml
runtime:
extensions:
- redis
- imagick
The overrides in my .lando.yml
don't seem to replace those extensions. So I still get errors when doing lando rebuild
if either redis
or imagick
are enabled in the platformfile. If I disable those in the platformfile and include imagick
in my Landofile overrides, I still get an error:
File "/usr/lib/python2.7/dist-packages/platformsh_app_php/__init__.py", line 208, in _validate_extension raise Exception("Extension '%s' is unknown." % extension)
Exception: Extension '{'configuration': {}, 'name': u'imagick'}' is unknown.
It seems like this issue might be related to the above #138
However, if I replace the imagick
extensions in the Landofile overrides with xdebug
as @reynoldsalec mentions above, it works fine (with the platformfile extensions disabled). Any time the platformfile extensions are enabled, it errors regardless of the landofile overrides.
Currently my only solution to use Lando locally is to comment out the extensions in the platformfile and run lando start
- then make sure I don't commit those changes when pushing to Platform.sh.
@reynoldsalec Some new information after looking at #138 - When I change the type
in .platform.app.yml
from php:8.1
to php.7.4
everything works fine. So it seems like this has something to do with the image for php 8.x
And using php:8.1
results in issues for both redis
and imagick
but then php:8.0
works for redis
and fails for imagick
- so there are some unique issues depending on the php version and extension selected.
Note to self: I should try this with the new P.sh images (see PRs for how to toggle those when running the plugin from source)...possible that they would solve the problem.
Ok @sgelliott + @jasonevines, after trying it out, I think it's very possible that trying out the "stableTags" PR could solve these problems for users.
To test that out:
mkdir ~/.lando/plugins/@lando
cd ~/.lando/plugins/@lando
git clone git@github.com:lando/platformsh.git
cd platformsh
git checkout stableTag
yarn install
Then go to one of your sites using the P.sh recipe and lando rebuild
it.
To make sure you're using the version of the P.sh Lando plugin from your plugins
directory, run lando config
and search for platformsh
, you should see an entry for the plugin that shows the path to ~/.lando/plugins
:
{ app: '/Users/alec/.lando/plugins/@lando/platformsh/app.js',
dir: '/Users/alec/.lando/plugins/@lando/platformsh',
name: '@lando/platformsh',
path: '/Users/alec/.lando/plugins/@lando/platformsh/index.js',
recipes: '/Users/alec/.lando/plugins/@lando/platformsh/recipes',
scripts: '/Users/alec/.lando/plugins/@lando/platformsh/scripts',
services: '/Users/alec/.lando/plugins/@lando/platformsh/services',
types: '/Users/alec/.lando/plugins/@lando/platformsh/types' },
You should also see Lando downloading the stable images on rebuild:
Status: Downloaded newer image for docker.registry.platform.sh/redis-6.0:stable
Let me know if you have trouble trying things out; if you reach out on Slack I might be able to help you debug in realtime.
...one thing to note if you try the stableTags
PR is that some of the service versions don't work (this is why we haven't deployed any of those PRs). Notably, I had to downgrade my MariaDB to 10.2 to get things to work.
Thank you, @reynoldsalec - I tried everything above. Here's what I got when using mariadb:10.4
in .platform/services.yml
...
Warning: Undefined array key "password" in /app/wordpress/wp-config.php on line 134 Error establishing a database connection
After that, I changed to mariadb:10.2
as you suggested. And did another lando rebuild
and got the same result. The password line is the one mentioned in the error. This is a new issue after doing what you outlined above.
if ($config->hasRelationship('redis') && extension_loaded('redis')) {
$credentials = $config->credentials('redis');
$redis_server = array(
'host' => $credentials['host'],
'port' => $credentials['port'],
'auth' => $credentials['password'],
);
}
Extensions enabled when doing this...
runtime:
extensions:
- redis
- imagick
Also, not sure if this is important, but when following this instruction mkdir ~/.lando/plugins/@lando
- I did not have a plugins
folder under ~/.lando/
- should that have been there already or is this introducing that folder as well?
All that being said, the errors mentioned above no longer exist when doing lando rebuild
( eg: Exception: Extension '{'configuration': {}, 'name': u'redis'}' is unknown.
). But the app does not function due to the DB connection error.
I'll reach out directly on Slack as a follow-up to this.
@sgelliott yeah that sounds like a different issue probably specific to the way you're getting config credentials. If the app services built and started up correctly, then we're at least addressing the problems specific to this issue.
Guessing you have a working setup already, but these are the Lando docs on wp-config.php: https://docs.lando.dev/wordpress/config.html#wp-config-php
@reynoldsalec Yeah, the configuration I have was working originally. The updates you shared above allowed the extensions to work, but the DB no longer connected. When I reverted the update above and rebuilt with the same configuration (extensions disabled) it works fine again (DB connects fine). So I don't think it's an issue with the wp-config.php. That configuration didn't change when using the new update above and also when reverting back to the original. But it worked with the original and not with the new plugin release above.
I am trying to set up a local environment so I can work on my site using PHP 8.1 and I am also running into this:
ERROR ==> Exception: Extension '{'configuration': {}, 'name': u'redis'}' is unknown.
The Redis service, corresponding to the Platform.sh Redis 6 image, doesn't start properly on my MacBook Pro M1 Max.
These errors keep repeating in the log: