magento / ece-tools

All Submissions you make to Magento Inc. (“Magento") through GitHub are subject to the following terms and conditions: (1) You grant Magento a perpetual, worldwide, non-exclusive, no charge, royalty free, irrevocable license under your applicable copyrights and patents to reproduce, prepare derivative works of, display, publically perform, sublicense and distribute any feedback, ideas, code, or other information (“Submission") you submit through GitHub. (2) Your Submission is an original work of authorship and you are the owner or are legally entitled to grant the license stated above. (3) You agree to the Contributor License Agreement found here: https://github.com/magento/magento2/blob/master/CONTRIBUTOR_LICENSE_AGREEMENT.html
Open Software License 3.0
117 stars 83 forks source link

str_replace(): Argument #3 ($subject) must be of type array|string, int given #808

Open Vormillion opened 2 years ago

Vormillion commented 2 years ago

Preconditions

  1. Magento 2.4.4 EE
  2. PHP 8.1
  3. ece-tools 2002.1.10

Steps to reproduce

  1. In Platform.sh create non-master environment which is child of master.
  2. Wait for deployment and error.

Expected result

  1. Deployment should pass and step "Updating secure and unsecure URLs in app/etc/env.php file" shouldn't break

Actual result

  1. Getting error message on environments where deployment process has to update base_urls:

09:26:32 [2022-05-16T07:26:32.096155+00:00] INFO: Updating secure and unsecure URLs 09:26:32 [2022-05-16T07:26:32.096223+00:00] INFO: Updating secure and unsecure URLs in core_config_data table. 09:26:32 [2022-05-16T07:26:32.098462+00:00] INFO: Updating secure and unsecure URLs in app/etc/env.php file 09:26:32 [2022-05-16T07:26:32.098831+00:00] INFO: Set flag: var/.deploy_is_failed 09:26:32 [2022-05-16T07:26:32.098906+00:00] ERROR: str_replace(): Argument #3 ($subject) must be of type array|string, int given 09:26:32 [2022-05-16T07:26:32.110349+00:00] INFO: Set flag: var/.deploy_is_failed 09:26:32 W: 09:26:32 W: In Processor.php line 129: 09:26:32 W:
09:26:32 W: str_replace(): Argument #3 ($subject) must be of type array|string, int giv
09:26:32 W: en
09:26:32 W:
09:26:32 W: 09:26:32 W: In Environment.php line 94: 09:26:32 W:
09:26:32 W: str_replace(): Argument #3 ($subject) must be of type array|string, int giv
09:26:32 W: en
09:26:32 W:
09:26:32 W: 09:26:32 W: deploy 09:26:32 W:

andriyShevtsov commented 2 years ago

@andriyShevtsov to create internal ticket

phoenix-bjoern commented 2 years ago

I was able to fix this issue by making sure there is a "http://{default}/" route in .magento/routes.yaml. So there is probably an issue with the MAGENTO_CLOUD_ROUTES variable. However, I think the code should not assume anything and gracefully handle the situation (or echo an error/hint).

BaDos commented 2 years ago

@phoenix-bjoern could you provide .magento/routes.yaml to reproduce it? Just remove this section?

"http://{default}/":
    type: upstream
    upstream: "mymagento:http"
BaDos commented 2 years ago

The internal task MCLOUD-8941 was created