John Davidson

php - What needs to be installed for `iconv` to work with PHP8


I'm trying to migrate doctrine/rst-parser to Github actions, and the last hurdle is a test that fails because of a call to iconv:

iconv('utf-8', 'us-ascii//TRANSLIT', $text)

The test fails with

Failed asserting that two strings are identical.
--- Expected
+++ Actual
@@ @@
<li class="dash">Test list item 1.</li>
<li class="dash">Test list item 2.</li>
-<p class="rot-gelb-blau grun-2008">Weird class names.</p>
+<p class="rot-gelb-blau grn-2008">Weird class names.</p>

I have tried installing the libc6 ubuntu package, and installing the iconv and intl PHP extensions, no dice. What should I try?

Here is a link to the pull request:

EDIT: the solution seems to be to do a setlocale(LC_ALL, 'en_US');, but that returns false on github actions for some reason.

My Answer:
To make `iconv` work with PHP8, you need to ensure that the `iconv` extension is installed and enabled in your PHP configuration. You can typically install the `iconv` extension using your package manager or by compiling PHP with the `--enable-iconv` flag.

If you are using a Linux distribution, you can install the `iconv` extension using the following commands:

For Ubuntu/Debian:

sudo apt-get install php8.0-iconv

For CentOS/RHEL:

sudo yum install php80-php-iconv

After installing the `iconv` extension, you may need to restart your web server for the changes to take effect.

Once the `iconv` extension is installed and enabled, the `iconv` function should work as expected in your PHP code.

Rate this post

3 of 5 based on 5352 votes


© 2024 - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us