I have a script that runs the wp cli to loop through and update the WordPress themes, plugins & core for a number of sites. Each site has different linux user ownership.
The problem I am seeing is an error message of Permission denied when running
1 2 3 | sudo -u $OWNER $WP --path=$WP_DIR theme update --all sudo -u $OWNER $WP --path=$WP_DIR plugin update --all sudo -u $OWNER $WP --path=$WP_DIR core update |
1 2 3 4 5 6 7 8 9 | Enabling Maintenance mode... Downloading update from https://downloads.wordpress.org/plugin/go-live-update-urls.6.3.7.zip... PHP Warning: rename(/tmp/go-live-update-urls.6.3.7-JImPud.tmp,go-live-update-urls.6.3.7.zip): Permission denied in /var/www/myuser/web/wp-admin/includes/file.php on line 1201 Warning: rename(/tmp/go-live-update-urls.6.3.7-JImPud.tmp,go-live-update-urls.6.3.7.zip): Permission denied in /var/www/myuser/web/wp-admin/includes/file.php on line 1201 Unpacking the update... Installing the latest version... Removing the old version of the plugin... Plugin updated successfully. Disabling Maintenance mode... |
I have managed to duplicate the problem with a test script. Basically it is a permission denied because the target directory of the rename operation is non-writeable by the user running the script.
1 2 3 4 5 6 7 8 9 | <?php $from = '/tmp/test.txt' ; # create the file file_put_contents ( $from , "Hello World" ); $to = 'newName.txt' ; # try rename it var_dump(rename( $from , $to )); |
1 2 3 4 5 6 7 8 9 | # I am in my home directory cd /home/myuser # I am trying to run the script as another user sudo -u otheruser php test_rename.php # because the rename to location is myuser home directory # the otheruser cant rename it from /tmp to output PHP Warning: rename(/tmp/test.txt,newName.txt): Permission denied in /home/jmcd/test_rename.php on line 9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | wp cli info OS: Linux 5.11.0-1028-azure #31~20.04.2-Ubuntu SMP Tue Jan 18 08:46:15 UTC 2022 x86_64 Shell: /bin/bash PHP binary: /usr/bin/php8 .0 PHP version: 8.0.15 php.ini used: /etc/php/8 .0 /cli/php .ini MySQL binary: /usr/bin/mysql MySQL version: mysql Ver 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu)) SQL modes: NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION WP-CLI root dir : phar: //wp-cli .phar /vendor/wp-cli/wp-cli WP-CLI vendor dir : phar: //wp-cli .phar /vendor WP_CLI phar path: /home/myuser/wp-admin-scripts WP-CLI packages dir : WP-CLI global config: WP-CLI project config: WP-CLI version: 2.6.0 |
0 Comments