MaxStrax Posted July 8, 2023 Posted July 8, 2023 (edited) Hello, I'm trying to setup the environment for ThirtyBees in docker, but I just can't get it working. I always, receive the message: file created in the system's temporary directory in /var/www/default/classes/PrestaShopAutoload.php on line 125 I know this error is due to permissions issues, after checking the corresponding line in the PrestaShopAutoload.php file. But, as this is my first time using a PHP application in nginx (+ php-fpm), I'm not really sure how to solve the permissions issue. I'm using the following Docker Compose file: services: web: image: nginx:latest container_name: nginx ports: - "10010:80/tcp" volumes: - /home/debian/docker-data/nginx/php:/var/www/default - /home/debian/docker-data/nginx/nginx.conf:/etc/nginx/nginx.conf restart: unless-stopped networks: - thirtybees-net php: image: php:8.0-fpm container_name: php-fpm volumes: - /home/debian/docker-data/nginx/php:/var/www/default networks: - thirtybees-net database: image: lscr.io/linuxserver/mariadb:10.11.4 container_name: thirtybees-db environment: - MYSQL_DATABASE=thirtybees - MYSQL_USER=thirtybees - MYSQL_PASSWORD=thirtybees - MYSQL_ROOT_PASSWORD=thirtybees_root - TZ=Europe/Madrid - PUID=1000 - PGID=1000 volumes: - /home/debian/docker-data/thirtybees-db:/config restart: unless-stopped networks: - thirtybees-net networks: thirtybees-net: name: thirtybees-net And, the nginx.conf file: worker_processes auto; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; root /var/www/html; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } } I tried with php: 7.4, 8.0, 8.1. Of course, after switching php-fpm docker versions, I was downloading and extracting the corresponding ZIP file for the matching version of ThirtyBees too. Edited July 8, 2023 by MaxStrax
datakick Posted July 8, 2023 Posted July 8, 2023 check php.ini configuration in your php docker, specifically sys_temp_dir. Make sure your php user has write access to this dir.
MaxStrax Posted July 9, 2023 Author Posted July 9, 2023 Thanks for replygin datakick, Now, it shows the following error.
MaxStrax Posted July 9, 2023 Author Posted July 9, 2023 It's installed, right now. But this new error is appearing: Link to database cannot be established: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
datakick Posted July 9, 2023 Posted July 9, 2023 delete settings.inc.php file from config directory, if it exists. During installation, enter name of your db docker container as database server.
MaxStrax Posted July 9, 2023 Author Posted July 9, 2023 (edited) Mmmm, the file does not exist there: Note: The error from above, appears just after the second click of the setup wizard: Choose your language (OK) > Licence agreement (OK) > System compatibility (FAIL). Edited July 9, 2023 by MaxStrax
datakick Posted July 9, 2023 Posted July 9, 2023 Try to delete your browser cookies, or use incognito mode. Looks like something is remembering your db settings somewhere from previous installation
MaxStrax Posted July 9, 2023 Author Posted July 9, 2023 I already tried that, but nothing. Also, I tried with the following suggestion too, but the 'allow_url_fopen' was enabled for me (On):
the.rampage.rado Posted July 12, 2023 Posted July 12, 2023 Here's a google result for exact same error but in Laravel. https://stackoverflow.com/questions/30182984/sqlstatehy000-2002-php-network-getaddresses-getaddrinfo-failed-name-or-ser TB is not able to connect to the DB server. Please, check your settings!
MaxStrax Posted July 12, 2023 Author Posted July 12, 2023 (edited) 1 hour ago, the.rampage.rado said: Here's a google result for exact same error but in Laravel. https://stackoverflow.com/questions/30182984/sqlstatehy000-2002-php-network-getaddresses-getaddrinfo-failed-name-or-ser TB is not able to connect to the DB server. Please, check your settings! I assume that ThirtyBees code checks for the database instance that will be connected to, not in the 4th step, but on System Compatibility step? My database instance (MariaDB) is ok. It's in the same docker network as the nginx/php webserver is placed. Also, I didn't mention it here, but when I try to run the setup by without configuring php-fpm on the standalone nginx docker container, I can complete all the setup wizard steps, including connecting to the mariadb container and it starts creating tables and such. But, I can't continue on the final step: I can't open store preview nor admin pane. But, when I try to add fpm support, the errors discussed on this thread starts to be shown. So, the database is not the problem here I think. Edited July 12, 2023 by MaxStrax
MaxStrax Posted July 12, 2023 Author Posted July 12, 2023 (edited) 1 hour ago, the.rampage.rado said: Here's a google result for exact same error but in Laravel. https://stackoverflow.com/questions/30182984/sqlstatehy000-2002-php-network-getaddresses-getaddrinfo-failed-name-or-ser TB is not able to connect to the DB server. Please, check your settings! What TB files manages the database discovery? A part from the 'settings.inc.php', but the System Compatibility setup, as it doesn't fail to create tables, but on the previous screen. Maybe, php-fpm implementation prevents somehow TB to see database instances when it checks the system compatibilities. Edited July 12, 2023 by MaxStrax
datakick Posted July 12, 2023 Posted July 12, 2023 The only thing that exists is this: https://github.com/thirtybees/thirtybees/blob/e25be2ffb57ff6d98ea28b65ac3aa3bc6e621d0a/classes/ConfigurationTest.php#L180-L195 That should NOT run during installation time, because constant _DB_SERVER_ is not defined yet. If this test is executed during install time, that means that you defined this constant somewhere - most likely in in settings.inc.php file. Double check that this file does not exists.
MaxStrax Posted July 12, 2023 Author Posted July 12, 2023 (edited) I finally got it working. Seems I was forgetting to include a php extension while building the image. But, the main reason was a file/folder permission error. Sorry about that. Totally, my fault. But, now I see this error message: Edited July 12, 2023 by MaxStrax
MaxStrax Posted July 12, 2023 Author Posted July 12, 2023 (edited) This is the Dockerfile I use to create the php-fpm image: FROM php:8.1-fpm # Instalar dependencias y módulos PHP necesarios RUN apt-get update && apt-get install -y \ libzip-dev \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ libonig-dev \ libxml2-dev \ libpq-dev \ && docker-php-ext-install -j$(nproc) \ bcmath \ gd \ intl \ pdo_mysql \ soap \ zip RUN docker-php-ext-enable gd RUN docker-php-ext-configure gd --with-freetype --with-jpeg # Habilitar OPcache RUN docker-php-ext-enable opcache # Configurar el archivo de configuración de PHP #COPY php.ini /usr/local/etc/php/conf.d/custom.ini # Establecer permisos adecuados para el servidor web RUN chown -R www-data:www-data /var/www/html/ Edited July 12, 2023 by MaxStrax
MaxStrax Posted July 12, 2023 Author Posted July 12, 2023 (edited) Ok. SOLVED! FROM php:8.1-fpm # Instalar dependencias y módulos PHP necesarios RUN apt-get update && apt-get install -y \ libzip-dev \ libfreetype6-dev \ libjpeg-dev \ libpng-dev \ libonig-dev \ libxml2-dev \ libpq-dev \ && docker-php-ext-install -j$(nproc) \ bcmath \ intl \ pdo_mysql \ soap \ zip RUN docker-php-ext-configure gd --with-freetype --with-jpeg RUN docker-php-ext-install gd RUN docker-php-ext-enable gd # Habilitar OPcache RUN docker-php-ext-enable opcache # Configurar el archivo de configuración de PHP #COPY php.ini /usr/local/etc/php/conf.d/custom.ini # Establecer permisos adecuados para el servidor web RUN chown -R www-data:www-data /var/www/html/ Edited July 12, 2023 by MaxStrax
vrooktreat Posted July 18, 2023 Posted July 18, 2023 I assume that ThirtyBees code checks for the database instance that will be connected to, not in the 4th step, but on System Compatibility step?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now