Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem installing PHP 8.3 extension on Windows #553

Open
andrey-helldar opened this issue Jul 8, 2024 · 24 comments
Open

Problem installing PHP 8.3 extension on Windows #553

andrey-helldar opened this issue Jul 8, 2024 · 24 comments
Labels

Comments

@andrey-helldar
Copy link

andrey-helldar commented Jul 8, 2024

Description

I'm trying to connect the rdkafka 6.0.3 extension to PHP 8.3.9, but I'm getting an error:

$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0
PHP 8.3.9 (cli) (built: Jul  2 2024 18:17:57) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.9, Copyright (c), by Zend Technologies
    with Xdebug v3.3.1, Copyright (c) 2002-2023, by Derick Rethans

$ which php
/d/modules/php/php

The rdkafka files are located in the following paths:

/d/modules/php/ext/php_rdkafka.dll
/d/modules/php/librdkafka.dll
/d/modules/php/librdkafka++.dll

That said, there is no problem with the extension installed in Ubuntu WSL.

I also tried deleting the librdkafka++.dll file (it was inside the archive), but that didn't help.

What could be the problem?

For PHP 8.1 and 8.2, the same problem.

php-rdkafka Version

php-rdkafka 6.0.3

librdkafka Version

No response

PHP Version

PHP 8.3.9

Operating System

Windows 11

Kafka Version

No response

@andrey-helldar andrey-helldar changed the title PHP 8.3 extension not installed on Windows Problem installing PHP 8.3 extension on Windows Jul 8, 2024
@Steveb-p
Copy link
Contributor

Steveb-p commented Jul 8, 2024

You should not really use .dll files provided by sources that are hardly verified. I do not know the owner of phpext.phptools.online, but I would be hard pressed to consider it remotely safe.

Try https://pecl.php.net/package/rdkafka/6.0.3/windows instead.

php.net is under PHP group, so unless something goes very wrong, you should use those. A checksum check should also be something you'd do, just to be sure.

It is executable code you're allowing to run, so be careful :)

@andrey-helldar
Copy link
Author

andrey-helldar commented Jul 8, 2024

Didn't work with the pecl option either :(

Helldar@HellPC MINGW64 /d/domains
$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0
PHP 8.3.9 (cli) (built: Jul  2 2024 18:17:57) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.9, Copyright (c), by Zend Technologies
    with Xdebug v3.3.1, Copyright (c) 2002-2023, by Derick Rethans

In the screenshot on the left is the phptools variant and on the right is pecl:
image

I've also tried specifying different links to the extension:

extension = rdkafka
;extension = rdkafka.dll
;extension = php_rdkafka
;extension = php_rdkafka.dll

@andrey-helldar
Copy link
Author

andrey-helldar commented Jul 9, 2024

Detailed steps to reproduce the problem:

  1. Download latest Non-Thread Safe PHP 8.3: https://windows.php.net/downloads/releases/php-8.3.9-nts-Win32-vs16-x64.zip
  2. Unzipped the archive into the "d:\php" folder.
  3. Renamed php.ini-development with php.ini
  4. Download rdkafka extension from PECL: https://downloads.php.net/~windows/pecl/releases/rdkafka/6.0.3/php_rdkafka-6.0.3-8.3-nts-vs16-x64.zip
  5. Move rdkafka's files to PHP directory:
    d:\php\ext\php_rdkafka.dll
    d:\php\librdkafka.dll
    d:\php\librdkafka++.dll
    d:\php\php_rdkafka.pdb
    
  6. Uncommented the extension location parameter in php.ini:
    ; On windows:
    extension_dir = "ext"
  7. Added the rdkafka extension:
    extension = rdkafka
  8. Open the terminal
  9. Executed the following console commands:
    cd d:\php
    ./php --version

Result:

Helldar@HellPC MINGW64 /d/php
$ ./php --version
PHP Warning:  PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0
PHP 8.3.9 (cli) (built: Jul  2 2024 18:17:57) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies

@andrey-helldar
Copy link
Author

andrey-helldar commented Jul 9, 2024

Trying the same steps in the Windows Sandbox.

  1. I get the error vcruntime140.dll file is unavailable
  2. I install Visual C++ Redistributable 2019 from https://aka.ms/vs/17/release/vc_redist.x64.exe
c:\php>php.exe --version
PHP Warning:  PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0
PHP 8.3.9 (cli) (built: Jul  2 2024 18:17:57) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies

@andrey-helldar
Copy link
Author

Checking on other versions:

PHP 8.1.29

c:\php>php.exe --version
PHP 8.1.29 (cli) (built: Jun  5 2024 10:43:14) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.1.29, Copyright (c) Zend Technologies

c:\php>php.exe -m
[PHP Modules]
...
rdkafka
...

PHP 8.2.21

c:\php>php.exe --version
PHP Warning:  PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0
PHP 8.2.21 (cli) (built: Jul  2 2024 14:00:59) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.2.21, Copyright (c) Zend Technologies

PHP 8.3.9

c:\php>php.exe --version
PHP Warning:  PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'rdkafka' (tried: ext\rdkafka (The specified module could not be found), ext\php_rdkafka.dll (The specified module could not be found)) in Unknown on line 0
PHP 8.3.9 (cli) (built: Jul  2 2024 18:17:57) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies

@wgole
Copy link

wgole commented Jul 11, 2024

I have the same problem!

@Adham-A
Copy link

Adham-A commented Jul 17, 2024

Hello, I am facing the same issue, did anybody found a solution so far ?

@andrey-helldar
Copy link
Author

andrey-helldar commented Jul 17, 2024

Hello, I am facing the same issue, did anybody found a solution so far ?

The problem is solved by compiling the library to a new version of PHP. I haven't found someone who can do that yet

@Adham-A
Copy link

Adham-A commented Jul 17, 2024

Hello, I am facing the same issue, did anybody found a solution so far ?

The problem is solved by compiling the library to a new version of PHP. I haven't found someone who can do that yet

Why is that ?
There are no guidelines on how to do it ? Or is it a more deep technical issue ?
I might be able to help

@andrey-helldar
Copy link
Author

Hello, I am facing the same issue, did anybody found a solution so far ?

The problem is solved by compiling the library to a new version of PHP. I haven't found someone who can do that yet

Why is that ? There are no guidelines on how to do it ? Or is it a more deep technical issue ? I might be able to help

When compiling a DLL, you need to consider the environment and its settings for which the compilation is being done.

Given the fact that the DLL runs on PHP 8.1, I can assume that either the PHP 8.2 and 8.3 versions were compiled with PHP 8.1 settings, or with incorrect settings, or the compiler did not take into account any nuances when building for PHP 8.2 and 8.3.

For example, the same tests (https://github.com/arnaud-lb/php-rdkafka/actions/runs/9445153156) - they were run on different environments. So there is a nuance somewhere.

Either way, you can find out by running the compiler in a customized development environment.

Translated with DeepL.com (free version)

@Adham-A
Copy link

Adham-A commented Jul 18, 2024

I successfully added the library to my project to work on one of my Windows environments using WampServer and PHP 8.2. However, when I attempted to set it up on my second Windows environment, with the same versions, it did not work.

I used the Dependency Walker tool from https://github.com/lucasg/Dependencies to identify any missing dependencies in the DLL files. Despite adding the missing dependencies, the setup still fails to work on the second environment.

Does anyone know if there is a requirment list of Windows DLL to make it work ?

@andrey-helldar
Copy link
Author

I successfully added the library to my project to work on one of my Windows environments using WampServer and PHP 8.2. However, when I attempted to set it up on my second Windows environment, with the same versions, it did not work.

I used the Dependency Walker tool from https://github.com/lucasg/Dependencies to identify any missing dependencies in the DLL files. Despite adding the missing dependencies, the setup still fails to work on the second environment.

Does anyone know if there is a requirment list of Windows DLL to make it work ?

The latest version of this project was released on October 25, 2021. PHP 8.1 was released exactly one month later, on November 25.

I doubt that this project will correctly search for missing dependencies for PHP 8.1, 8.2 and 8.3.

@Adham-A
Copy link

Adham-A commented Jul 18, 2024

I've looked around Google there are no good looking alternatives in PHP, I will try to dig into the project then

@doomdudeblue
Copy link

Also not working for me. Got the DLLs from PECL and they Just Do Not Work. Hope to see a fix here soon!

@neokofg
Copy link

neokofg commented Aug 15, 2024

Same problem

@dhanyn10singapay
Copy link

same problem

@dhanyn10singapay
Copy link

now i change to python in microservice to get kafka logs instead of using rdkafka. If anyone need for tutorial, you can ask me directly

@andrey-helldar
Copy link
Author

andrey-helldar commented Aug 21, 2024

The problem is that the librdkafka library is built for a different version of PHP.

Is there anyone who knows how to compile it for the right version of PHP?
The last stable release is 2.5.0 from July 10 (https://github.com/confluentinc/librdkafka/releases).

@phglong1999
Copy link

Download php 8.1 for Windows, copy libssl-1_1.dll, libcrypto-1_1.dll from php 8.1 to php 8.2 and it will work.

@andrey-helldar
Copy link
Author

@phglong1999, but it won't work for 8.3 anyway.

@leexin
Copy link

leexin commented Oct 7, 2024

Managed to solve this for PHP 8.3 on Windows 11 after some trial and error

  1. Download the Nuget package from https://www.nuget.org/packages/librdkafka.redist/ (click on "Download package")
  2. Open the downloaded file via 7zip or any ZIP file browser.
  3. Copy the following files (libcurl.dll, librdkafka.dll, msvcp140.dll, vcruntime140.dll, zlib1.dll, zstd.dll) from runtimes\win-x64\native\ folder into your PHP root folder same level as php.ini
  4. Run php -v / -m again, php-rdkafka should be added to your PHP modules successfully now

@auto2810321
Copy link

@andrey-helldar I have installed phprdkafka on version 8.2

@auto2810321
Copy link

@andrey-helldar Please follow the instructions to install phprdkafka bth and install OpenSSL.
Please install the correct version 1.1 and do not install a higher version. If you have any errors please let me know
https://slproweb.com/download/Win64OpenSSL-1_1_1w.exe

@andrey-helldar
Copy link
Author

@andrey-helldar Please follow the instructions to install phprdkafka bth and install OpenSSL. Please install the correct version 1.1 and do not install a higher version. If you have any errors please let me know https://slproweb.com/download/Win64OpenSSL-1_1_1w.exe

I see two problems in this case:

  1. I am not using PHP 8.2. The project uses version 8.3.
  2. Download an exe file from an obscure site? No, thanks. If I want to download openssl, I will only do it from the official site.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

10 participants