Magento – (Pre-installation) ownership and permissions problems (CentOS / NGINX)

centoshttp-error-500installationnginxpermissions

This is my first time installing Magento and I feel quite stupid getting stuck so early in the proces. I followed the official documentation to install Magento 2.3 by the book.

  • Fresh CentOS 7 installation on a dedicated VPS, only using root
  • Using the official documentation: https://devdocs.magento.com/guides/v2.3/install-gde/prereq/nginx.html
  • Installed NGINX, configured and well
  • Installed MySQL, configured and well
  • Installed PHP 7.1.24 (Webtatic), configured and well
  • Succesfully tested a phpinfo-page to make sure NGINX and PHP-FPM are working properly
  • Created a composer project (/usr/share/nginx/html/magento2) without any problems
  • Set the file permissions like described in the offical documentation
  • Installed Magento without any problems
  • Opened a browser. Error 500.

When I check my NGINX logs there's all kind of different permission-related PHP fatal errors like "Can't write file", "Class did not generate properly" and "Directory permission is read only". Example:

2018/12/20 15:08:23 [error] 16213#0: *7 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Zend_Cache_Exception: cache_dir "/usr/share/nginx/html/magento2/var/page_cache" is not writable in /usr/share/nginx/html/magento2/vendor/magento/zendframework1/library/Zend/Cache.php:209
Stack trace:
#0 /usr/share/nginx/html/magento2/vendor/magento/zendframework1/library/Zend/Cache/Backend/File.php(180): Zend_Cache::throwException('cache_dir "/usr...')
#1 /usr/share/nginx/html/magento2/vendor/colinmollenhour/cache-backend-file/File.php(87): Zend_Cache_Backend_File->setCacheDir('/usr/share/ngin...')
#2 /usr/share/nginx/html/magento2/vendor/magento/zendframework1/library/Zend/Cache.php(153): Cm_Cache_Backend_File->__construct(Array)
#3 /usr/share/nginx/html/magento2/vendor/magento/zendframework1/library/Zend/Cache.php(94): Zend_Cache::_makeBackend('Cm_Cache_Backen...', Array, true, true)
#4 /usr/share/nginx/html/magento2/vendor/magento/framework/App/Cache/Frontend/Factory.php(156): Zend_Cache::factory('Magento\\Framewo...', 'Cm_Cache_Backen...', Array, Array, true, tr" while reading response header from upstream, client: ip.ip.ip.ip, server: server.com, request: "GET / HTTP/1.1", upstream$

I chmodded the whole Magento-directory to 777 (-R), but to no avail.
I chowned from root:root to nginx:nginx, but to no avail.

When troubleshooting online I only read suggestions about apache users and www-data users, but I don't use Apache and I don't use Ubuntu.

What are the correct permissions for a pure CentOS 7 / NGINX setup?

Thanks :$

Best Answer

cd /var/www/html/[--folder_name----]/public_html && sudo chown -R apache:apache /var/www/html/ && sudo chmod -R 777 /var/www/html/[--folder_name----]/public_html/ && sudo chown -R :apache /var/www/html/[--folder_name----]/public_html && sudo find /var/www/html/[folder_name]/public_html -type f -print0 | sudo xargs -r0 chmod 640 && sudo find /var/www/html/[--folder_name----]/public_html -type d -print0 | sudo xargs -r0 chmod 750 && sudo chmod -R g+w /var/www/html/[--folder_name----]/public_html/{pub,var} && sudo chmod -R g+w /var/www/html/[--folder_name----]/public_html/{app/etc,vendor} && sudo chmod 750 /var/www/html/[--folder_name----]/public_html/bin/magento && sudo chcon -R -t httpd_sys_rw_content_t var && sudo chcon -R -t httpd_sys_rw_content_t app && sudo chcon -R -t httpd_sys_rw_content_t pub && sudo chcon -R -t httpd_sys_rw_content_t generated && sudo systemctl restart httpd.service

Try this Command for CentOS 7. Replace this [--folder_name----] this by your folder name in html folder

Related Topic