apache 编写器-缺少扩展图标

ccgok5k5  于 2023-04-21  发布在  Apache
关注(0)|答案(5)|浏览(150)

我正在运行Manjaro Linux,我已经安装了apache 2.4.10-1,php 5.5.15-1和php-composer 1.0.0.alpha8.458-1。
我想用这个命令下载项目与 composer

composer create-project nette/sandbox TaskManager

但是我在ext-iconv上出错了

- nette/neon v2.2.1 requires ext-iconv * -> the requested PHP extension iconv is missing from your system.
- nette/nette v2.2.0 requires ext-iconv * -> the requested PHP extension iconv is missing from your system.

但是在我的php.ini中我启用了iconv扩展

extension=iconv.so
.
.
[iconv]
iconv.input_encoding = ISO-8859-1
iconv.internal_encoding = ISO-8859-1
iconv.output_encoding = ISO-8859-1

在我的php脚本中,我可以使用iconv函数,没有任何问题。
当我运行php-m时,我看到iconv与其他模块一起出现在列表中
你知道问题出在哪里吗?

编辑:当我从cli运行php -i时,我得到了这个:

Configuration File (php.ini) Path => /etc/php
Loaded Configuration File => /etc/php/php.ini
Scan this dir for additional .ini files => /etc/php/conf.d
Additional .ini files parsed => (none)

并且在这个配置文件中启用了iconv。
即使我跑的时候

php -d error_reporting=E_ALL -r 'echo iconv("UTF-8", "ASCII//TRANSLIT", "Žluťoučký kůň\n");'

它正确执行并打印“Zlutoucky kun”。

mi7gmzs6

mi7gmzs61#

所以我发现, composer 使用不同的php配置文件,这是存储在

/usr/share/php-composer/php.ini

在那里我只是添加了以下行

extension=iconv.so

而且一切正常!

5n0oy7gb

5n0oy7gb2#

我解决了这个问题uncomment行

ext=iconv

in/etc/php/php. ini在manjaro linux上工作

raogr8fs

raogr8fs3#

在Centos7上的WHM中,它为我工作。

yum install ea-php72-php-iconv

您可以替换您的php版本而不是php72

9ceoxa92

9ceoxa924#

如果您使用的是PHPBrew,请运行以下命令来安装iconv扩展:

phpbrew ext install iconv
ncecgwcz

ncecgwcz5#

我也在运行Arch(在Manjaro堆栈下,也使用pacman)。
如果php.ini文件声明了正确的扩展名,但仍然得到错误,请尝试composer标志--ignore-platform-req=。在您的情况下,可能是这样的:

composer create-project nette/sandbox TaskManager --ignore-platform-req=ext-iconv

此外,请确保永远不要以root用户身份运行composer,而要以web用户身份运行php

su httpd -c 'php composer create-project nette/sandbox TaskManager --ignore-platform-req=ext-iconv'

如果php正在执行composer命令,那么Composer可能会更好地查看更相关的php.ini文件。
在为他人创建自己的项目时,错误警报的倾向可能是不使用composer的另一个原因。
请记住,composer是作为一种“保姆”来自动安装依赖项的......因为Web管理员不知道如何阅读文档并自己完成,对吗?它主要适用于不了解Web管理的Web开发人员,或者被雇主或客户拒绝访问root,但只能在堆栈中更高的位置工作。
由于Composer的目的,它可能会触发很多错误警告。这可能就是为什么它有--ignore-platform-req=标志。不要害怕使用这个标志,因为它是composer的补救措施之一。

相关问题