[BUG]: Installation fails with ' Interface "VDM\Joomla\Interfaces\PHPConfigurationCheckerInterface" not found ' #1174

Closed
opened 2024-10-02 01:00:13 +00:00 by ConfidantCommunications · 10 comments

What Happened?

I attempted to install JCB by uploading the 5.0.3 version(tar.gz). I expected it to install without errors but instead I see:

An error has occurred.

0 Interface "VDM\Joomla\Interfaces\PHPConfigurationCheckerInterface" not found 

Call stack is:

Function Location

1 () JROOT/tmp/install_66fc984c42faa/component-builder/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/PHPConfigurationChecker.php:25
2 require() JROOT/tmp/install_66fc984c42faa/component-builder/ComponentbuilderInstallerPowerloader.php:58
3 Com_ComponentbuilderInstallerScript->{closure}() JROOT/tmp/install_66fc984c42faa/component-builder/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/PHPConfigurationChecker.php:24

Steps to reproduce the Bug

Start with Joomla 5.1.4. I have the recommended PHP settings and modules. Install Component-Builder-v5.0.3.tar.gz. View error.

Which Joomla version are you compiling in?

5.1.4

Which PHP version are you compiling in?

8.2.23

Which Joomla versions are you targeting?

5.1.4

Which PHP version are you targeting?

8.2.23

Which Web server is JCB running on?

Joomla Docker image. Apache 2 it seems.

Which Relational Database is JCB running on?

mysqlnd 8.2.23

Which OS is JCB running on?

Alpine linux

Which JCB version are you using?

5.0.3

Where in JCB did this issue occur?

Other

On which browsers did you encounter the issue?

Firefox

Additional Comments

No response

### What Happened? I attempted to install JCB by uploading the 5.0.3 version(tar.gz). I expected it to install without errors but instead I see: An error has occurred. 0 Interface "VDM\Joomla\Interfaces\PHPConfigurationCheckerInterface" not found Call stack is: # Function Location 1 () JROOT/tmp/install_66fc984c42faa/component-builder/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/PHPConfigurationChecker.php:25 2 require() JROOT/tmp/install_66fc984c42faa/component-builder/ComponentbuilderInstallerPowerloader.php:58 3 Com_ComponentbuilderInstallerScript->{closure}() JROOT/tmp/install_66fc984c42faa/component-builder/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/PHPConfigurationChecker.php:24 ### Steps to reproduce the Bug Start with Joomla 5.1.4. I have the recommended PHP settings and modules. Install Component-Builder-v5.0.3.tar.gz. View error. ### Which Joomla version are you compiling in? 5.1.4 ### Which PHP version are you compiling in? 8.2.23 ### Which Joomla versions are you targeting? 5.1.4 ### Which PHP version are you targeting? 8.2.23 ### Which Web server is JCB running on? Joomla Docker image. Apache 2 it seems. ### Which Relational Database is JCB running on? mysqlnd 8.2.23 ### Which OS is JCB running on? Alpine linux ### Which JCB version are you using? 5.0.3 ### Where in JCB did this issue occur? Other ### On which browsers did you encounter the issue? Firefox ### Additional Comments _No response_
ConfidantCommunications added the
Bug
label 2024-10-02 01:00:13 +00:00
Owner

Please try to install JCB from Package: https://git.vdm.dev/joomla/pkg-component-builder/releases

The tar.gz version is https://git.vdm.dev/joomla/pkg-component-builder/archive/v5.0.3.tar.gz

Then my tested setup for Joomla in Docker:

services:
  mariadb_websitename:
    image: mariadb:latest
    container_name: mariadb_websitename
    restart: unless-stopped
    environment:
      MARIADB_USER: octoleo
      MARIADB_DATABASE: octoleo
      MARIADB_PASSWORD: your_password_here
      MARIADB_ROOT_PASSWORD: your_root_password_here
    volumes:
      - '/home/username/Projects/websitename/db:/var/lib/mysql'
    networks:
      - traefik

  joomla_websitename:
    image: joomla:5.1
    container_name: joomla_websitename
    restart: unless-stopped
    environment:
      JOOMLA_SITE_NAME: Octoleo
      JOOMLA_ADMIN_USER: Octoleo
      JOOMLA_ADMIN_USERNAME: octoleo
      JOOMLA_ADMIN_PASSWORD: your_password_here
      JOOMLA_ADMIN_EMAIL: docker@octoleo.org
      JOOMLA_DB_HOST: mariadb_websitename:3306
      JOOMLA_DB_USER: octoleo
      JOOMLA_DB_NAME: octoleo
      JOOMLA_DB_PASSWORD: your_password_here
      JOOMLA_EXTENSIONS_URLS: https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip
    depends_on:
      - mariadb_websitename
    volumes:
      - '/home/username/Projects/websitename/website:/var/www/html'
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.joomla_websitename.rule=Host(`octoleo.yourdomain.com`)"
      - "traefik.http.routers.joomla_websitename.entrypoints=websecure"
      - "traefik.http.services.joomla_websitename.loadbalancer.server.port=80"
      - "traefik.http.routers.joomla_websitename.service=joomla_websitename"
      - "traefik.http.routers.joomla_websitename.tls.certresolver=octoleoresolver"

  phpmyadmin_websitename:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin_websitename
    restart: unless-stopped
    environment:
      PMA_HOST: mariadb_websitename
      PMA_PORT: 3306
      UPLOAD_LIMIT: 300M
    depends_on:
      - mariadb_websitename
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.phpmyadmin_websitename.rule=Host(`octoleo-db.yourdomain.com`)"
      - "traefik.http.routers.phpmyadmin_websitename.entrypoints=websecure"
      - "traefik.http.services.phpmyadmin_websitename.loadbalancer.server.port=80"
      - "traefik.http.routers.phpmyadmin_websitename.service=phpmyadmin_websitename"
      - "traefik.http.routers.phpmyadmin_websitename.tls.certresolver=octoleoresolver"

networks:
  traefik:
    external: true
    name: traefik_webgateway

I am using traefik, read more here.

Please try to install JCB from Package: https://git.vdm.dev/joomla/pkg-component-builder/releases The tar.gz version is https://git.vdm.dev/joomla/pkg-component-builder/archive/v5.0.3.tar.gz Then my tested setup for Joomla in Docker: ``` services: mariadb_websitename: image: mariadb:latest container_name: mariadb_websitename restart: unless-stopped environment: MARIADB_USER: octoleo MARIADB_DATABASE: octoleo MARIADB_PASSWORD: your_password_here MARIADB_ROOT_PASSWORD: your_root_password_here volumes: - '/home/username/Projects/websitename/db:/var/lib/mysql' networks: - traefik joomla_websitename: image: joomla:5.1 container_name: joomla_websitename restart: unless-stopped environment: JOOMLA_SITE_NAME: Octoleo JOOMLA_ADMIN_USER: Octoleo JOOMLA_ADMIN_USERNAME: octoleo JOOMLA_ADMIN_PASSWORD: your_password_here JOOMLA_ADMIN_EMAIL: docker@octoleo.org JOOMLA_DB_HOST: mariadb_websitename:3306 JOOMLA_DB_USER: octoleo JOOMLA_DB_NAME: octoleo JOOMLA_DB_PASSWORD: your_password_here JOOMLA_EXTENSIONS_URLS: https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip depends_on: - mariadb_websitename volumes: - '/home/username/Projects/websitename/website:/var/www/html' networks: - traefik labels: - "traefik.enable=true" - "traefik.http.routers.joomla_websitename.rule=Host(`octoleo.yourdomain.com`)" - "traefik.http.routers.joomla_websitename.entrypoints=websecure" - "traefik.http.services.joomla_websitename.loadbalancer.server.port=80" - "traefik.http.routers.joomla_websitename.service=joomla_websitename" - "traefik.http.routers.joomla_websitename.tls.certresolver=octoleoresolver" phpmyadmin_websitename: image: phpmyadmin/phpmyadmin container_name: phpmyadmin_websitename restart: unless-stopped environment: PMA_HOST: mariadb_websitename PMA_PORT: 3306 UPLOAD_LIMIT: 300M depends_on: - mariadb_websitename networks: - traefik labels: - "traefik.enable=true" - "traefik.http.routers.phpmyadmin_websitename.rule=Host(`octoleo-db.yourdomain.com`)" - "traefik.http.routers.phpmyadmin_websitename.entrypoints=websecure" - "traefik.http.services.phpmyadmin_websitename.loadbalancer.server.port=80" - "traefik.http.routers.phpmyadmin_websitename.service=phpmyadmin_websitename" - "traefik.http.routers.phpmyadmin_websitename.tls.certresolver=octoleoresolver" networks: traefik: external: true name: traefik_webgateway ``` I am using traefik, [read more here](https://hub.docker.com/r/llewellyn/joomla).
Owner

I also normally add a php.ini file to the container since JCB is a fairly large component in relation to Joomla.

Here you can read more on that: https://git.vdm.dev/joomla/Component-Builder/wiki/PHP-Settings

PS. note that I have a little bash script to manage all this for me called OctoJoom: https://git.vdm.dev/octoleo/octojoom

I also normally add a `php.ini` file to the container since JCB is a fairly large component in relation to Joomla. Here you can read more on that: https://git.vdm.dev/joomla/Component-Builder/wiki/PHP-Settings PS. note that I have a little bash script to manage all this for me called OctoJoom: https://git.vdm.dev/octoleo/octojoom

Thanks for this. I have not yet delved into comparing your Docker setup to mine. I did already adjust the PHP settings per the documentation. Installing from the file you mentioned got it hooked up to Joomla but I am noticing the languages seem to be amiss, as the menus are identified by their language identifier e.g. COM_COMPONENTBUILDER_MENU.

There was a warning after install:
Copy file failed
Package Install: There was an error installing an extension: joomla__Component-Builder__5.x.zip
danger
Error installing package.

I will certainly explore further according to the instructions you provided, unless you have a quick fix for the new problems.

Thanks for this. I have not yet delved into comparing your Docker setup to mine. I did already adjust the PHP settings per the documentation. Installing from the file you mentioned got it hooked up to Joomla but I am noticing the languages seem to be amiss, as the menus are identified by their language identifier e.g. COM_COMPONENTBUILDER_MENU. There was a warning after install: Copy file failed Package Install: There was an error installing an extension: joomla__Component-Builder__5.x.zip danger Error installing package. I will certainly explore further according to the instructions you provided, unless you have a quick fix for the new problems.

Yeah, the component is not working at all.

Yeah, the component is not working at all.
Owner

Are you sure that it's the component at fault? JCB has been the backbone for hundreds of corporate development infrastructures, and while I understand you're having issues, dismissing it entirely based on setup difficulties isn't productive.

I've been working with JCB daily for the past 10 years, alongside many teams worldwide who use it in production environments. We have automated systems that deploy and test JCB on a daily basis, including compiling tests. Rest assured, the component is functioning as expected.

What could be happening is that your system setup has some unique characteristics or configurations that we're not aware of. Instead of saying "the component is not working at all," it would be far more helpful if you could provide detailed information about your environment and the specific steps you're taking. This way, we can work together to identify and resolve the issue.

Are you sure that it's the component at fault? JCB has been the backbone for hundreds of corporate development infrastructures, and while I understand you're having issues, dismissing it entirely based on setup difficulties isn't productive. I've been working with JCB daily for the past 10 years, alongside many teams worldwide who use it in production environments. We have automated systems that deploy and test JCB on a daily basis, including compiling tests. Rest assured, the component is functioning as expected. What could be happening is that your system setup has some unique characteristics or configurations that we're not aware of. Instead of saying "the component is not working at all," it would be far more helpful if you could provide detailed information about your environment and the specific steps you're taking. This way, we can work together to identify and resolve the issue.

I think you are taking this too personally. I'm not disrespecting this obviously valuable tool. I've tried it before a few years ago and I was impressed. I'm just stating that the furthest I got was that it almost installed, I saw a bunch of menu items that were just language codes. Later I clicked on them to test things and I got more errors. So the component was not working, as I said.

So in the spirit of what you suggest, here's my current Docker compose file. Thanks again for your help.

services:

  joomla:
    image: joomla
    restart: always
    ports:
      - 8080:80
    environment:
      JOOMLA_DB_HOST: db
      JOOMLA_DB_USER: joomla
      JOOMLA_DB_PASSWORD: (my-actual-password-removed)
      JOOMLA_DB_NAME: joomla_db
      JOOMLA_SITE_NAME: Joomla3D
      JOOMLA_ADMIN_USER: Allan Dowdeswell
      JOOMLA_ADMIN_USERNAME: admin_user
      JOOMLA_ADMIN_PASSWORD: (my-actual-password-removed)
      JOOMLA_ADMIN_EMAIL: (my-actual-email)
    volumes:
      - joomla_data:/var/www/html
    networks:
      - joomla_network

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: joomla_db
      MYSQL_USER: joomla
      MYSQL_PASSWORD: (my-actual-password-removed)
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - joomla_network

  phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - 8081:80
    environment:
      - PMA_ARBITRARY=1
    restart: unless-stopped
    networks:
      - joomla_network

volumes:
  joomla_data:
  db_data:


networks:
  joomla_network:
I think you are taking this too personally. I'm not disrespecting this obviously valuable tool. I've tried it before a few years ago and I was impressed. I'm just stating that the furthest I got was that it almost installed, I saw a bunch of menu items that were just language codes. Later I clicked on them to test things and I got more errors. So the component was not working, as I said. So in the spirit of what you suggest, here's my current Docker compose file. Thanks again for your help. ``` services: joomla: image: joomla restart: always ports: - 8080:80 environment: JOOMLA_DB_HOST: db JOOMLA_DB_USER: joomla JOOMLA_DB_PASSWORD: (my-actual-password-removed) JOOMLA_DB_NAME: joomla_db JOOMLA_SITE_NAME: Joomla3D JOOMLA_ADMIN_USER: Allan Dowdeswell JOOMLA_ADMIN_USERNAME: admin_user JOOMLA_ADMIN_PASSWORD: (my-actual-password-removed) JOOMLA_ADMIN_EMAIL: (my-actual-email) volumes: - joomla_data:/var/www/html networks: - joomla_network db: image: mysql:8.0 restart: always environment: MYSQL_DATABASE: joomla_db MYSQL_USER: joomla MYSQL_PASSWORD: (my-actual-password-removed) MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db_data:/var/lib/mysql networks: - joomla_network phpmyadmin: image: phpmyadmin:latest ports: - 8081:80 environment: - PMA_ARBITRARY=1 restart: unless-stopped networks: - joomla_network volumes: joomla_data: db_data: networks: joomla_network: ```

For the record, in my attempt to fix the copy error I tried fixing the permissions using AdminTools but it didn't work.
As for the specific steps I'm taking, I simply attempt to install the package file and then I get the copy error.
Copy file failed
Package Install: There was an error installing an extension: joomla__Component-Builder__5.x.zip
danger
Error installing package.

I tried "installing from folder" after that and had the same problem.

For the record, in my attempt to fix the copy error I tried fixing the permissions using AdminTools but it didn't work. As for the specific steps I'm taking, I simply attempt to install the package file and then I get the copy error. Copy file failed Package Install: There was an error installing an extension: joomla__Component-Builder__5.x.zip danger Error installing package. I tried "installing from folder" after that and had the same problem.
Owner

Okay I took your docker-composer.yml file and found one error... the JOOMLA_ADMIN_USERNAME

This file just as it is worked perfectly well for me.

services:

  joomla:
    image: joomla:5.1
    restart: always
    ports:
      - 8080:80
    environment:
      JOOMLA_DB_HOST: db
      JOOMLA_DB_USER: joomla
      JOOMLA_DB_PASSWORD: my-actual-password-removed
      JOOMLA_DB_NAME: joomla_db
      JOOMLA_SITE_NAME: Joomla3D
      JOOMLA_ADMIN_USER: Allan Dowdeswell
      JOOMLA_ADMIN_USERNAME: adminuser
      JOOMLA_ADMIN_PASSWORD: my-actual-password-removed
      JOOMLA_ADMIN_EMAIL: my-actual-email@vdm.io
      JOOMLA_EXTENSIONS_URLS: https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip
    volumes:
      - joomla_data:/var/www/html
    networks:
      - joomla_network

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: joomla_db
      MYSQL_USER: joomla
      MYSQL_PASSWORD: my-actual-password-removed
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - joomla_network

  phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - 8081:80
    environment:
      - PMA_ARBITRARY=1
    restart: unless-stopped
    networks:
      - joomla_network

volumes:
  joomla_data:
  db_data:


networks:
  joomla_network:

Just change the admin_user to adminuser to clear this error from the logs:

MySQL Database Created
[ERROR] JOOMLA_ADMIN_USERNAME must contain **no spaces and be only alphabetical**!
 This server is now configured to run Joomla!

  NOTE: You will need your database server address, database name,
        and database user credentials to install Joomla.

Then I add the JCB package to the install env values with:

JOOMLA_EXTENSIONS_URLS: https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip

And it all worked and installed and compiled... hope this helps.

Okay I took your `docker-composer.yml` file and found one error... the `JOOMLA_ADMIN_USERNAME` This file just as it is worked perfectly well for me. ``` services: joomla: image: joomla:5.1 restart: always ports: - 8080:80 environment: JOOMLA_DB_HOST: db JOOMLA_DB_USER: joomla JOOMLA_DB_PASSWORD: my-actual-password-removed JOOMLA_DB_NAME: joomla_db JOOMLA_SITE_NAME: Joomla3D JOOMLA_ADMIN_USER: Allan Dowdeswell JOOMLA_ADMIN_USERNAME: adminuser JOOMLA_ADMIN_PASSWORD: my-actual-password-removed JOOMLA_ADMIN_EMAIL: my-actual-email@vdm.io JOOMLA_EXTENSIONS_URLS: https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip volumes: - joomla_data:/var/www/html networks: - joomla_network db: image: mysql:8.0 restart: always environment: MYSQL_DATABASE: joomla_db MYSQL_USER: joomla MYSQL_PASSWORD: my-actual-password-removed MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db_data:/var/lib/mysql networks: - joomla_network phpmyadmin: image: phpmyadmin:latest ports: - 8081:80 environment: - PMA_ARBITRARY=1 restart: unless-stopped networks: - joomla_network volumes: joomla_data: db_data: networks: joomla_network: ``` Just change the `admin_user` to `adminuser` to clear this error from the logs: ```text MySQL Database Created [ERROR] JOOMLA_ADMIN_USERNAME must contain **no spaces and be only alphabetical**! This server is now configured to run Joomla! NOTE: You will need your database server address, database name, and database user credentials to install Joomla. ``` Then I add the JCB package to the install env values with: ``` JOOMLA_EXTENSIONS_URLS: https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip ``` And it all worked and installed and compiled... hope this helps.

That username was actually edited by me because I didn't want it public here. I do have a working Joomla running in Docker now. Thanks for checking my docker setup though. That bit about the JOOMLA_EXTENSIONS_URLS is good to know. I have been doing work on my current installation already so I'm hoping I don't have to start from a fresh install just yet.

I am able to install other components by uploading a zip or gzip file, with no error. Are you able to install the package "pkg-component-builder-v5.0.3.tar.gz" using that method?

That username was actually edited by me because I didn't want it public here. I do have a working Joomla running in Docker now. Thanks for checking my docker setup though. That bit about the JOOMLA_EXTENSIONS_URLS is good to know. I have been doing work on my current installation already so I'm hoping I don't have to start from a fresh install just yet. I am able to install other components by uploading a zip or gzip file, with no error. Are you able to install the package "pkg-component-builder-v5.0.3.tar.gz" using that method?

I found the solution.
According to this article https://stackoverflow.com/questions/62390727/docker-chown-doesnt-work-for-www-data-user-permissions-arent-changing the problem is the volume mounting - the volume preserves the permissions from outside the container; it is inheriting the host user's permissions. I did check that and it seemed that the user was properly set to www-data, but I finally did this then it worked:
chown -R www-data: /var/www/html

Before doing that I had to open up a shell within the docker container. First found the hash for it (f7896c83e0d3) using docker container ls -a then started the shell using docker exec -t -i f7896c83e0d3 /bin/bash. Then did the chown function and installed the component.

I found the solution. According to this article https://stackoverflow.com/questions/62390727/docker-chown-doesnt-work-for-www-data-user-permissions-arent-changing the problem is the volume mounting - the volume preserves the permissions from outside the container; it is inheriting the host user's permissions. I did check that and it seemed that the user was properly set to www-data, but I finally did this then it worked: `chown -R www-data: /var/www/html` Before doing that I had to open up a shell within the docker container. First found the hash for it (f7896c83e0d3) using `docker container ls -a` then started the shell using `docker exec -t -i f7896c83e0d3 /bin/bash`. Then did the chown function and installed the component.
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: joomla/Component-Builder#1174
No description provided.