I saw the error on PHP web page, but it's actually from Apache httpd server.
Failed to open stream: Permission denied
After searching for solutions on internet, I found it all about SELinux, so I took the actions below:
1. Change the owner to apache on target directory. Sometimes, this step is optional.
[root@test ~]# chown -R apache:apache /var/www/html/web1/uploads/
2. Add read-write privilege on this directory.
[root@test ~]# chcon -t httpd_sys_rw_content_t /var/www/html/web1/uploads/ -R
3. Let's see the security context of directories and files.
[root@test ~]# ls -Z /var/www/html/web1/
...
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 css
drwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 uploads
...
The problem was solved.