No menu after migration form 7.14.3 to 8.6.
I’m logged as administrator.
What PHP version is it running.
What’s the related entries in the error log.
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use an implementation of “ApiPlatform\Api\IriConverterInterface” instead of “ApiPlatform\Core\Api\IriConverterInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use an implementation of "ApiPlatform\Api\IriConverterInterface" instead of "ApiPlatform\Core\Api\IriConverterInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/Hydra/Serializer/CollectionNormalizer.php:62)”} []
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use “ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface” instead of “ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use "ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface" instead of "ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/Hydra/Serializer/PartialCollectionViewNormalizer.php:50)”} []
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use “ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface” instead of “ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use "ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface" instead of "ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/Hydra/Serializer/CollectionFiltersNormalizer.php:53)”} []
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use an implementation of “ApiPlatform\Api\IriConverterInterface” instead of “ApiPlatform\Core\Api\IriConverterInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use an implementation of "ApiPlatform\Api\IriConverterInterface" instead of "ApiPlatform\Core\Api\IriConverterInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/JsonLd/Serializer/ObjectNormalizer.php:44)”} []
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use “ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface” instead of “ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use "ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface" instead of "ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/Symfony/EventListener/DeserializeListener.php:63)”} [][2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use an implementation of “ApiPlatform\Api\IriConverterInterface” instead of “ApiPlatform\Core\Api\IriConverterInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use an implementation of "ApiPlatform\Api\IriConverterInterface" instead of "ApiPlatform\Core\Api\IriConverterInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/Hydra/Serializer/CollectionNormalizer.php:62)”} []
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use “ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface” instead of “ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use "ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface" instead of "ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/Hydra/Serializer/PartialCollectionViewNormalizer.php:50)”} []
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use “ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface” instead of “ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use "ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface" instead of "ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/Hydra/Serializer/CollectionFiltersNormalizer.php:53)”} []
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use an implementation of “ApiPlatform\Api\IriConverterInterface” instead of “ApiPlatform\Core\Api\IriConverterInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use an implementation of "ApiPlatform\Api\IriConverterInterface" instead of "ApiPlatform\Core\Api\IriConverterInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/JsonLd/Serializer/ObjectNormalizer.php:44)”} []
[2024-04-15 09:24:58] php.INFO: User Deprecated: Since api-platform/core 2.7: Use “ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface” instead of “ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface”. {“exception”:“[object] (ErrorException(code: 0): User Deprecated: Since api-platform/core 2.7: Use "ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface" instead of "ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface". at /opt/suitecrm-8.6/vendor/api-platform/core/src/Symfony/EventListener/DeserializeListener.php:63)”} []
PHP 8.1.2-1ubuntu2.15 (cli) (built: Feb 23 2024 17:26:53) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.15, Copyright (c), by Zend Technologies
2024/04/15 09:24:58 [error] 4695#4695: *191 FastCGI sent in stderr: “PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 134PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 144PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 131PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 141” while reading response header from upstream, client: 10.11.12.1, server: crm.arven-tech.com, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php8.1-fpm.sock:”, host: “crm.arven-tech.com”
site_url
in config.php
? It should be something like https://crm.yoursite.tld
DocumentRoot
for your apache webserver virtual host to your /opt/suitecrm-8.6/public
directory?More here:
You’re using NGINX as a reverse proxy to the Apache 2.4 web server.
That’s not how to configure NGINX as a reverse proxy!
/opt/suitecrm-8.6/.htaccess
:# Redirect to HTTPS
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) public/$1 [L]
</IfModule>
Install module for proxy headers: sudo apt-get install libapache2-mod-rpaf
Set NGINX reverse proxy configuration correctly with:
worker_processes auto;
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
server {
listen 80;
listen 443 ssl http2;
server_name crm.mysite.tld;
keepalive_timeout 70;
ssl_certificate crm.mysite.tld.crt;
ssl_certificate_key crm.mysite.tld.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass https://127.0.0.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Other than the suggestion from @chris001, just thought it could also be good to check the basics:
public/legacy/suitecrm.logs
Hi!
Actually, it’s the other way around: apache2 as reverse proxy, and nginx hosting the suitecrm.
Here is the apache2 config:
ServerName crm.arven-tech.com ProxyPreserveHost On ProxyPass / http://10.11.12.183:81/ ProxyPassReverse / http://10.11.12.183:81/SSLCertificateFile /etc/letsencrypt/live/crm.arven-tech.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/crm.arven-tech.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
<VirtualHost *:80>
ServerName crm.arven-tech.com
ProxyPreserveHost On
ProxyPass / http://10.11.12.183:81/
ProxyPassReverse / http://10.11.12.183:81/
RewriteEngine on
RewriteCond %{SERVER_NAME} =crm.arven-tech.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Here is the nginx config:
server {
listen 81;
listen [::]:81;
root /opt/suitecrm-8.6/public;
error_log /var/log/nginx/suitecrm.error.log;
access_log /var/log/nginx/suitecrm.access.log;
client_max_body_size 100M;
index index.php index.html index.htm;
server_name crm.arven-tech.com;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\\.php(/|$) {
fastcgi_split_path_info ^(.+\\.php)(/.*)$;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_temp_file_write_size 10m;
fastcgi_busy_buffers_size 512k;
fastcgi_buffer_size 512k;
fastcgi_buffers 16 512k;
fastcgi_read_timeout 1200;
fastcgi_param HTTP_AUTHORIZATION $http_authorization;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \\.php$ {
return 404;
}
location ^~ /legacy/ {
try_files $uri $uri/ /index.php?$args;
location ~ \\.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\\.php)(/.*)$;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param HTTPS $https;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
location ~ /api/(?!(graphql)) {
alias /opt/suitecrm-8.6/public/legacy; # Important
index index.php;
try_files $uri @rewrite_api;
# ... (other configuration as needed)
}
}
how do I check if the permissions are ok?
nginx error logs shows the following
2024/04/17 22:37:07 [error] 16420#16420: *7 FastCGI sent in stderr: “PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 134PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 144PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 131PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 141” while reading response header from upstream, client: 10.11.12.1, server: crm.arven-tech.com, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php8.1-fpm.sock:”, host: “crm.arven-tech.com”
2024/04/17 22:37:09 [error] 16420#16420: *1 FastCGI sent in stderr: “PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 134PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 144PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 131PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 141” while reading response header from upstream, client: 10.11.12.1, server: crm.arven-tech.com, request: “POST /api/graphql HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php8.1-fpm.sock:”, host: “crm.arven-tech.com”, referrer: “https://crm.arven-tech.com/”
2024/04/17 22:37:09 [error] 16420#16420: *1 FastCGI sent in stderr: “PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 134PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 144PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 131PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 141” while reading response header from upstream, client: 10.11.12.1, server: crm.arven-tech.com, request: “GET /session-status HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php8.1-fpm.sock:”, host: “crm.arven-tech.com”, referrer: “https://crm.arven-tech.com/”
2024/04/17 22:37:09 [error] 16420#16420: *1 FastCGI sent in stderr: “PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 134PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 144PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 131PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 141” while reading response header from upstream, client: 10.11.12.1, server: crm.arven-tech.com, request: “POST /api/graphql HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php8.1-fpm.sock:”, host: “crm.arven-tech.com”, referrer: “https://crm.arven-tech.com/”
2024/04/17 22:37:09 [error] 16420#16420: *1 FastCGI sent in stderr: “PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 134PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 144PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 131PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 141” while reading response header from upstream, client: 10.11.12.1, server: crm.arven-tech.com, request: “POST /api/graphql HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php8.1-fpm.sock:”, host: “crm.arven-tech.com”, referrer: “https://crm.arven-tech.com/”
2024/04/17 22:37:09 [error] 16420#16420: *17 FastCGI sent in stderr: “PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 134PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php on line 144PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 131PHP message: PHP Deprecated: Return type of Symfony\Component\HttpFoundation\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /opt/suitecrm-8.6/vendor/symfony/http-foundation/Session/Session.php on line 141” while reading response header from upstream, client: 10.11.12.1, server: crm.arven-tech.com, request: “POST /api/graphql HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php8.1-fpm.sock:”, host: “crm.arven-tech.com”, referrer: “https://crm.arven-tech.com/”
When you browse to your suite server directly (nginx) http://crm.arven-tech.com:81
, does the menu appear OK?
Reset permissions, run these commands, replacing www-data
with the username Suite is running as:
find . -type d -not -perm 2755 -exec chmod 2755 {} \;
find . -type f -not -perm 0644 -exec chmod 0644 {} \;
find . ! -user www-data -exec chown www-data:www-data {} \;
chmod +x bin/console