In the Yii 2 advanced template, execute the initialization command in CentOS 7.2, the analysis solution for some directory permissions under some applications is not set to 777 (the root is the Docker deployment configuration problem)
1. Execute the initialization command in Windows 10, set the directory permissions of all applications, normal (14 lines in total), as shown in Figure 1
PS E:\wwwroot\channel-pub-api> ./init --env=Development --overwrite=All
Yii Application Initialization Tool v1.0
Start initialization ...
exist api/config/main-local.php
...overwrite? [Yes|No|All|Quit] overwrite api/config/main-local.php
unchanged api/config/params-local.php
unchanged api/config/test-local.php
unchanged api/web/index-test.php
unchanged api/web/index.php
unchanged api/web/robots.txt
overwrite backend/config/main-local.php
unchanged backend/config/params-local.php
unchanged backend/config/test-local.php
unchanged backend/web/index-test.php
unchanged backend/web/index.php
unchanged backend/web/robots.txt
unchanged common/config/main-local.php
unchanged common/config/params-local.php
unchanged common/config/test-local.php
unchanged console/config/main-local.php
unchanged console/config/params-local.php
overwrite frontend/config/main-local.php
unchanged frontend/config/params-local.php
unchanged frontend/config/test-local.php
unchanged frontend/web/index-test.php
unchanged frontend/web/index.php
unchanged frontend/web/robots.txt
overwrite qq/config/main-local.php
unchanged qq/config/params-local.php
unchanged qq/config/test-local.php
unchanged qq/web/index-test.php
unchanged qq/web/index.php
unchanged qq/web/robots.txt
overwrite rpc/config/main-local.php
unchanged rpc/config/params-local.php
unchanged rpc/config/test-local.php
unchanged rpc/web/index-test.php
unchanged rpc/web/index.php
unchanged rpc/web/robots.txt
overwrite wx/config/main-local.php
unchanged wx/config/params-local.php
unchanged wx/config/test-local.php
unchanged wx/web/index-test.php
unchanged wx/web/index.php
unchanged wx/web/robots.txt
unchanged yii
unchanged yii_test
unchanged yii_test.bat
generate cookie validation key in backend/config/main-local.php
generate cookie validation key in frontend/config/main-local.php
generate cookie validation key in api/config/main-local.php
generate cookie validation key in rpc/config/main-local.php
generate cookie validation key in qq/config/main-local.php
generate cookie validation key in wx/config/main-local.php
chmod 0777 backend/runtime
chmod 0777 backend/web/assets
chmod 0777 frontend/runtime
chmod 0777 frontend/web/assets
chmod 0777 api/runtime
chmod 0777 api/web/assets
chmod 0777 rpc/runtime
chmod 0777 rpc/web/assets
chmod 0777 qq/runtime
chmod 0777 qq/web/assets
chmod 0777 wx/runtime
chmod 0777 wx/web/assets
chmod 0755 yii
chmod 0755 yii_test
... initialization completed.
2. Execute the initialization command in CentOS 7.2, the directory permissions under some applications are not set, abnormal (8 lines in total), as shown in Figure 2
[root@579789e72a51 /]# php /sobey/www/channel-pub-api/init --env=Development --overwrite=All
Yii Application Initialization Tool v1.0
Start initialization ...
exist api/config/main-local.php
...overwrite? [Yes|No|All|Quit] overwrite api/config/main-local.php
unchanged api/config/params-local.php
unchanged api/config/test-local.php
unchanged api/web/index-test.php
unchanged api/web/index.php
unchanged api/web/robots.txt
overwrite backend/config/main-local.php
unchanged backend/config/params-local.php
unchanged backend/config/test-local.php
unchanged backend/web/index-test.php
unchanged backend/web/index.php
unchanged backend/web/robots.txt
unchanged common/config/main-local.php
unchanged common/config/params-local.php
unchanged common/config/test-local.php
unchanged console/config/main-local.php
unchanged console/config/params-local.php
overwrite frontend/config/main-local.php
unchanged frontend/config/params-local.php
unchanged frontend/config/test-local.php
unchanged frontend/web/index-test.php
unchanged frontend/web/index.php
unchanged frontend/web/robots.txt
unchanged qq/config/main-local.php
unchanged qq/config/params-local.php
unchanged qq/config/test-local.php
unchanged qq/web/index-test.php
unchanged qq/web/index.php
unchanged qq/web/robots.txt
unchanged rpc/config/main-local.php
unchanged rpc/config/params-local.php
unchanged rpc/config/test-local.php
unchanged rpc/web/index-test.php
unchanged rpc/web/index.php
unchanged rpc/web/robots.txt
unchanged wx/config/main-local.php
unchanged wx/config/params-local.php
unchanged wx/config/test-local.php
unchanged wx/web/index-test.php
unchanged wx/web/index.php
unchanged wx/web/robots.txt
unchanged yii
unchanged yii_test
unchanged yii_test.bat
generate cookie validation key in backend/config/main-local.php
generate cookie validation key in frontend/config/main-local.php
generate cookie validation key in api/config/main-local.php
chmod 0777 backend/runtime
chmod 0777 backend/web/assets
chmod 0777 frontend/runtime
chmod 0777 frontend/web/assets
chmod 0777 api/runtime
chmod 0777 api/web/assets
chmod 0755 yii
chmod 0755 yii_test
... initialization completed.
3. Enter the /api directory to view, and find that the directory permission of runtime is set to 777, but the directory permission of runtime in the /qq directory is not set to 777, as shown in Figure 3
4. Edit \init in Windows 10, print $envs, as expected
PS E:\wwwroot\channel-pub-api> ./init --env=Development --overwrite=All
Array
(
[Development] => Array
(
[path] => dev
[setWritable] => Array
(
[0] => backend/runtime
[1] => backend/web/assets
[2] => frontend/runtime
[3] => frontend/web/assets
[4] => api/runtime
[5] => api/web/assets
[6] => rpc/runtime
[7] => rpc/web/assets
[8] => qq/runtime
[9] => qq/web/assets
[10] => wx/runtime
[11] => wx/web/assets
)
[setExecutable] => Array
(
[0] => yii
[1] => yii_test
)
[setCookieValidationKey] => Array
(
[0] => backend/config/main-local.php
[1] => frontend/config/main-local.php
[2] => api/config/main-local.php
[3] => rpc/config/main-local.php
[4] => qq/config/main-local.php
[5] => wx/config/main-local.php
)
)
[Production] => Array
(
[path] => prod
[setWritable] => Array
(
[0] => backend/runtime
[1] => backend/web/assets
[2] => frontend/runtime
[3] => frontend/web/assets
[4] => api/runtime
[5] => api/web/assets
[6] => rpc/runtime
[7] => rpc/web/assets
[8] => qq/runtime
[9] => qq/web/assets
[10] => wx/runtime
[11] => wx/web/assets
)
[setExecutable] => Array
(
[0] => yii
)
[setCookieValidationKey] => Array
(
[0] => backend/config/main-local.php
[1] => frontend/config/main-local.php
[2] => api/config/main-local.php
[3] => rpc/config/main-local.php
[4] => qq/config/main-local.php
[5] => wx/config/main-local.php
)
)
)
5. Edit \init in CentOS 7.2, print $env, which does not meet expectations, and find that QQ/runtime is missing.
[root@579789e72a51 /]# php /sobey/www/channel-pub-api/init --env=Development --overwrite=All
Array
(
[Development] => Array
(
[path] => dev
[setWritable] => Array
(
[0] => backend/runtime
[1] => backend/web/assets
[2] => frontend/runtime
[3] => frontend/web/assets
[4] => api/runtime
[5] => api/web/assets
)
[setExecutable] => Array
(
[0] => yii
[1] => yii_test
)
[setCookieValidationKey] => Array
(
[0] => backend/config/main-local.php
[1] => frontend/config/main-local.php
[2] => api/config/main-local.php
)
)
[Production] => Array
(
[path] => prod
[setWritable] => Array
(
[0] => backend/runtime
[1] => backend/web/assets
[2] => frontend/runtime
[3] => frontend/web/assets
[4] => api/runtime
[5] => api/web/assets
)
[setExecutable] => Array
(
[0] => yii
)
[setCookieValidationKey] => Array
(
[0] => backend/config/main-local.php
[1] => frontend/config/main-local.php
[2] => api/config/main-local.php
)
)
)
6. The reason is that when the docker is deployed, it is to /build/c_files/ Copy all files in the directory to the root directory of the system, the corresponding directory configuration is missing in the \build\c_files\sobey\www\channel-pub-api\environments\index.php file
[
* 'path' => 'directory storing the local files',
* 'skipFiles' => [
* // list of files that should only copied once and skipped if they already exist
* ],
* 'setWritable' => [
* // list of directories that should be set writable
* ],
* 'setExecutable' => [
* // list of files that should be set executable
* ],
* 'setCookieValidationKey' => [
* // list of config files that need to be inserted with automatically generated cookie validation keys
* ],
* 'createSymlink' => [
* // list of symlinks to be created. Keys are symlinks, and values are the targets.
* ],
* ],
* ];
* ```
*/
return [
'Development' => [
'path' => 'dev',
'setWritable' => [
'backend/runtime',
'backend/web/assets',
'frontend/runtime',
'frontend/web/assets',
'api/runtime',
'api/web/assets',
],
'setExecutable' => [
'yii',
'yii_test',
],
'setCookieValidationKey' => [
'backend/config/main-local.php',
'frontend/config/main-local.php',
'api/config/main-local.php',
],
],
'Production' => [
'path' => 'prod',
'setWritable' => [
'backend/runtime',
'backend/web/assets',
'frontend/runtime',
'frontend/web/assets',
'api/runtime',
'api/web/assets',
],
'setExecutable' => [
'yii',
],
'setCookieValidationKey' => [
'backend/config/main-local.php',
'frontend/config/main-local.php',
'api/config/main-local.php',
],
],
];
7. Copy \environments\index.php to \build\c_files\sobey\www\channel-pub-api\environments\index.php, re-upgrade, in CentOS 7.2 Execute the initialization command, which is in line with expectations, as shown in Figure 4
[root@579789e72a51 /]# php /sobey/www/channel-pub-api/init --env=Development --overwrite=All
Yii Application Initialization Tool v1.0
Start initialization ...
generate api/config/main-local.php
generate api/config/params-local.php
generate api/config/test-local.php
generate api/web/index-test.php
generate api/web/index.php
generate api/web/robots.txt
generate backend/config/main-local.php
generate backend/config/params-local.php
generate backend/config/test-local.php
generate backend/web/index-test.php
generate backend/web/index.php
generate backend/web/robots.txt
generate common/config/main-local.php
generate common/config/params-local.php
generate common/config/test-local.php
generate console/config/main-local.php
generate console/config/params-local.php
generate frontend/config/main-local.php
generate frontend/config/params-local.php
generate frontend/config/test-local.php
generate frontend/web/index-test.php
generate frontend/web/index.php
generate frontend/web/robots.txt
generate qq/config/main-local.php
generate qq/config/params-local.php
generate qq/config/test-local.php
generate qq/web/index-test.php
generate qq/web/index.php
generate qq/web/robots.txt
generate rpc/config/main-local.php
generate rpc/config/params-local.php
generate rpc/config/test-local.php
generate rpc/web/index-test.php
generate rpc/web/index.php
generate rpc/web/robots.txt
generate wx/config/main-local.php
generate wx/config/params-local.php
generate wx/config/test-local.php
generate wx/web/index-test.php
generate wx/web/index.php
generate wx/web/robots.txt
generate yii
generate yii_test
generate yii_test.bat
generate cookie validation key in backend/config/main-local.php
generate cookie validation key in frontend/config/main-local.php
generate cookie validation key in api/config/main-local.php
generate cookie validation key in rpc/config/main-local.php
generate cookie validation key in qq/config/main-local.php
generate cookie validation key in wx/config/main-local.php
chmod 0777 backend/runtime
chmod 0777 backend/web/assets
chmod 0777 frontend/runtime
chmod 0777 frontend/web/assets
chmod 0777 api/runtime
chmod 0777 api/web/assets
chmod 0777 rpc/runtime
chmod 0777 rpc/web/assets
chmod 0777 qq/runtime
chmod 0777 qq/web/assets
chmod 0777 wx/runtime
chmod 0777 wx/web/assets
chmod 0755 yii
chmod 0755 yii_test
... initialization completed.
8. Enter the /API directory to view, and find that the directory permission of runtime is set to 777, and the directory permission of runtime in the /qq directory is also set to 777, as shown in Figure 5




