google-ads-php icon indicating copy to clipboard operation
google-ads-php copied to clipboard

composer.lock is always read from home directory instead tests

Open chiragvels opened this issue 1 year ago • 3 comments

Hi,

I am in the process of updating my code to use the latest version of the library. To ensure that the current working environment continues to function properly, I created another directory and installed the latest version of the library with Composer in this new directory. For this, I made multiple composer.json files in different directories so that my structure looks like this:

/my-project
    /application
    /vendor
    composer.json
    /tests
        /vendor
        composer.json

And autoload the vendor using:

require_once '/tests/vendor/autoload.php'

Now, When I tried to build an instance of the GoogleAdsClient object, I received the following error:

The grpc extension installed by Composer has a greater version than that installed by PECL. Upgrade the PECL extension to avoid issues caused by the version difference. For linux, run "sudo pecl install grpc".

To ensure I have the correct version of grpc, I checked with composer show and found that the version installed by PECL is greater than the one installed by Composer.

When I closely checked the Dependencies.php under Util, I noticed it was checking the composer.lock from the /my-project (the home directory of the project).

How can I tell the library to read files from /tests instead of the home directory /my-project?

Thanks,

chiragvels avatar May 24 '24 07:05 chiragvels

I believe we cannot do that yet with the current version of the GoogleAdsClientBuilder class. I'm considering allowing for bypassing that check (with users' own risks) when creating the GoogleAdsClient.

fiboknacky avatar May 31 '24 15:05 fiboknacky

Hi @fiboknacky ,

Thanks for considering this, If you can guide how I can do as of now?

Thanks,

chiragvels avatar Jun 07 '24 05:06 chiragvels

The quick fix for now is to comment out everything in getGrpcComposerVersion except for the last line return null;. That will make the client library skip comparing versions between composer.lock and the system package.

fiboknacky avatar Jun 07 '24 06:06 fiboknacky