作曲家-扩展图标丢失



我运行的是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"

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

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

这里我只是添加了下面一行

extension=iconv.so

一切都工作!

我解决了这个问题,取消了

行的注释
ext=iconv
在/etc/php/php.ini

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

yum install ea-php72-php-iconv
php72

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

phpbrew ext install iconv

我也在运行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开发人员,或者被雇主或客户拒绝访问root,但只能在堆栈中工作的web开发人员。

由于Composer的目的,它可能会触发许多错误警告。这可能就是为什么它有--ignore-platform-req=标志的原因。不要害怕使用这一点,因为这是composer的可取之处之一。

相关内容

  • 没有找到相关文章

最新更新