Home >Backend Development >PHP Tutorial >Deploying Symfoy2 under Linux to set permissions on the app/cache and app/logs directories, symfoy2logs_PHP tutorial
After deploying Symfony2 under Linux, app/logs may be reported when accessing Or there is an error that the app/cache directory does not have write permission. Under Linux, if the user we log in from the command line is different from the user of the web application server (apache, nginx, etc.),
You can use the following four methods to solve this problem.
1. Use ACL on a system that supports chmod +a
Many versions of Linux systems support the chmod +a command, so we use this command first. Find the user name of the web application server and assign it to the variable HTTPDUSER.
<span>1</span> <span>$ rm -rf app/cache/* </span><span>2</span> <span>$ rm -rf app/logs/* </span><span>3</span> <span>4</span> $ HTTPDUSER=`ps aux | grep -E '<span>[</span><span>a</span><span>]</span>pache|<span>[</span><span>h</span><span>]</span>ttpd|<span>[</span><span>_</span><span>]</span>www|<span>[</span><span>w</span><span>]</span>ww-data|<span>[</span><span>n</span><span>]</span>ginx' | grep -v root | head -1<span> | cut -d\ -f1` </span><span>5</span> $ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit"<span> app/cache app/logs </span><span>6</span> $ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
The fourth line of command is: find the user name of the web application server and assign it to the variable HTTPDUSER; the fifth line of command is: grant the web application server permissions to read, write, create directories, etc. on the app/logs or app/cache directory; the fifth line of command is: The six-line command is: grant the command line login user permissions to read, write, create directories, etc. on the app/logs or app/cache directory.
2. If the system does not support chmod +a, then use the setfacl command to set the ACL
First, make sure that the partition where the directory is located supports ACL and the setfacl command has been installed.
<span>1</span> $ HTTPDUSER=`ps aux | grep -E '<span>[</span><span>a</span><span>]</span>pache|<span>[</span><span>h</span><span>]</span>ttpd|<span>[</span><span>_</span><span>]</span>www|<span>[</span><span>w</span><span>]</span>ww-data|<span>[</span><span>n</span><span>]</span>ginx' | grep -v root | head -1<span> | cut -d\ -f1` </span><span>2</span> $ sudo setfacl -R -m u:"$HTTPDUSER"<span>:rwX -m u:`whoami`:rwX app/cache app/logs </span><span>3</span> $ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
If it doesn’t work, add the -n option to the second and third lines of the command.
3. Do not use ACL
If you are not using ACL, you can also change the umask so that the user groups in these two directories have permission to create and modify files (775, and the web application server and command line users are in the same group) or all users have the permission to create and the permission to modify files (777), but these two sets of permissions are unsafe and the permissions given are too high. Add the following code to the first line of the app/console
, web/app.php
and web/app_dev.php
files.
<span>1</span> umask(<span>0002</span>); <span>//</span><span> 生成的目录(app/cache和app/logs)权限为0775 </span><span>2</span> <span>3</span> <span>//</span><span> 或者</span> <span>4</span> <span>5</span> umask(<span>0000</span>); <span>//</span><span> 生成的目录(app/cache和app/logs)权限为0777</span>
Note: PHP’s umask command is not thread-safe.
4. The user who logs in from the command line and the user of the web application server are the same user.
If you are a beginner, just configure a port number and user permissions~ Don’t worry about the rest