0
votes

I have just installed a fresh copy of WordPress on a Google GCP App Engine STANDARD environment following these steps: https://cloud.google.com/community/tutorials/run-wordpress-on-appengine-standard

The last step is pretty unclear or uncomplete. I have create the bucket (GCP Storage), installed the GCS official plugin (0.1.5) but when I upload some images on media folder i have this error:

Fatal error: Uncaught GuzzleHttp\Exception\ClientException: Client error: `GET https://www.googleapis.com/storage/v1/b/xxx-news.appspot.com/o/1%2F2019%2F11` resulted in a `404 Not Found` response: { "error": { "code": 404, "message": "No such object: xxx-news.appspot.com/1/2019/11", "errors": [ (truncated...) in /srv/wp-content/plugins/gcs/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 Stack trace: #0 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response)) #1 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response)) #2 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array) #3 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() #4 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/promises/src/Promise.php(246): GuzzleHttp\Promise\TaskQueue->run(true) #5 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/promises/src/Promise.php(223): GuzzleHttp\Promise\Promise->invokeWaitFn() #6 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\Promise\Promise->waitIfPending() #7 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\Promise\Promise->invokeWaitList() #8 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending() #9 /srv/wp-content/plugins/gcs/vendor/guzzlehttp/guzzle/src/Client.php(106): GuzzleHttp\Promise\Promise->wait() #10 /srv/wp-content/plugins/gcs/vendor/google/auth/src/HttpHandler/Guzzle6HttpHandler.php(34): GuzzleHttp\Client->send(Object(GuzzleHttp\Psr7\Request), Array) #11 [internal function]: Google\Auth\HttpHandler\Guzzle6HttpHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array) #12 /srv/wp-content/plugins/gcs/gcs.php(134): call_user_func_array(Object(Google\Auth\HttpHandler\Guzzle6HttpHandler), Array) #13 [internal function]: Google\Cloud\Storage\WordPress\{closure}(Object(GuzzleHttp\Psr7\Request), Array) #14 /srv/wp-content/plugins/gcs/vendor/google/cloud-core/src/ExponentialBackoff.php(74): call_user_func_array(Object(Closure), Array) #15 /srv/wp-content/plugins/gcs/vendor/google/cloud-core/src/RequestWrapper.php(166): Google\Cloud\Core\ExponentialBackoff->execute(Object(Closure), Array) #16 /srv/wp-content/plugins/gcs/vendor/google/cloud-core/src/RestTrait.php(95): Google\Cloud\Core\RequestWrapper->send(Object(GuzzleHttp\Psr7\Request), Array) #17 /srv/wp-content/plugins/gcs/vendor/google/cloud-storage/src/Connection/Rest.php(195): Google\Cloud\Storage\Connection\Rest->send('objects', 'get', Array) #18 /srv/wp-content/plugins/gcs/vendor/google/cloud-storage/src/StorageObject.php(1123): Google\Cloud\Storage\Connection\Rest->getObject(Array) #19 /srv/wp-content/plugins/gcs/vendor/google/cloud-storage/src/StorageObject.php(1074): Google\Cloud\Storage\StorageObject->reload(Array) #20 /srv/wp-content/plugins/gcs/vendor/google/cloud-storage/src/StreamWrapper.php(583): Google\Cloud\Storage\StorageObject->info() #21 /srv/wp-content/plugins/gcs/vendor/google/cloud-storage/src/StreamWrapper.php(488): Google\Cloud\Storage\StreamWrapper->urlStatFile() #22 [internal function]: Google\Cloud\Storage\StreamWrapper->url_stat('gs://xxx-news....', 2) #23 /srv/wp-includes/functions.php(1922): file_exists('gs://xxx-news....') #24 /srv/wp-includes/functions.php(2254): wp_mkdir_p('gs://xxx-news....') #25 /srv/wp-admin/includes/file.php(837): wp_upload_dir('2019-11-20 11:1...') #26 /srv/wp-admin/includes/file.php(953): _wp_handle_upload(Array, Array, '2019-11-20 11:1...', 'wp_handle_uploa...') #27 /srv/wp-admin/includes/media.php(301): wp_handle_upload(Array, Array, '2019-11-20 11:1...') #28 /srv/wp-admin/async-upload.php(93): media_handle_upload('async-upload', 0) #29 /srv/gae-app.php(53): require('/srv/wp-admin/a...') #30 {main} thrown in /srv/wp-content/plugins/gcs/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113

I suppose i'm missing something on my ACL permission but i don't have idea how to proceed

Thanks!

1
Keep in mind that if you have followed the tutorial, the permissions specified are Read-only. In order to change it, and based on the documentation, you can try to use the following command: gsutil defacl ch -u AllUsers:O gs://YOUR_PROJECT_ID.appspot.com Using the "O" option, you will add all the users to the default object ACL with OWNER access. Let me know if this works for you! - ericcco
Hello @eespinola thanks. I have played around with some workaround. I think the answer is simpler: the 0.1.5 version of GCS plugin is bugged. I had downgraded the plugin to the 0.1.4 and everything now is working. - Andrea Redshot
I am glad that you solved the issue and thank you for posting the solution as an answer! Would be great if you can mark the solution as accepted in order to get more visibility from other users that are facing the same issue :) - ericcco
Yes of course.. i had only to wait 2 days in order to accept my own answer. Thanks! - Andrea Redshot

1 Answers

1
votes