--enable-phar=shared 我是不是必须重新编译 PHP 才能安装 Composer?

Posted

技术标签:

【中文标题】--enable-phar=shared 我是不是必须重新编译 PHP 才能安装 Composer?【英文标题】:--enable-phar=shared Do I have to recompile PHP to Install Composer?--enable-phar=shared 我是否必须重新编译 PHP 才能安装 Composer? 【发布时间】:2014-05-23 04:33:24 【问题描述】:

我正在尝试在 DreamHost VPS 上安装 Composer

Linux 3.1.9-vs2.3.2.5vs2.3.2.5+

网页 php 版本 5.4.11

CLI 版本 PHP 5.4.11 (cli)

phpinfo() 输出只有一个对 phar 的引用,它说 --enable-phar=shared 但是当我尝试以下操作时,输出说我需要启用 phar。

sudo -u myuser curl -sS https://getcomposer.org/installer | /usr/local/php54/bin/php
#!/usr/bin/env php
Some settings on your machine make Composer unable to work properly.
Make sure that you fix the issues listed below and run this script again:

The phar extension is missing.
Install it or recompile php without --disable-phar

是否必须重新编译 PHP 才能启用 par 扩展?

这是当前的全部配置命令

'./configure' '--prefix=/usr/local/php54' '--datadir=/usr/local/php54/share' '--localstatedir=/usr/local/php54/var' '--without-pear' '--with-config-file-path=/etc/php54' '--with-config-file-scan-dir=/etc/php54/conf.d' '--with-zend-vm=GOTO' '--enable-cgi' '--enable-fpm' '--enable-libxml=shared' '--enable-bcmath=shared' '--enable-calendar=shared' '--enable-ctype=shared' '--enable-dom=shared' '--enable-exif=shared' '--enable-fileinfo=shared' '--enable-filter=shared' '--enable-ftp=shared' '--enable-hash=shared' '--enable-intl=shared' '--enable-json=shared' '--enable-mbstring' '--enable-mbregex' '--enable-mbregex-backtrack' '--enable-pcntl=shared' '--enable-pdo' '--enable-phar=shared' '--enable-posix=shared' '--enable-session=shared' '--enable-shmop=shared' '--enable-simplexml=shared' '--enable-soap=shared' '--enable-sockets=shared' '--enable-sysvmsg=shared' '--enable-sysvsem=shared' '--enable-sysvshm=shared' '--enable-tokenizer=shared' '--enable-wddx=shared' '--enable-xml=shared' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--enable-zip=shared' '--with-openssl=shared' '--with-kerberos' '--with-pcre-regex' '--with-sqlite3' '--with-zlib=shared' '--with-bz2=shared' '--with-curl=shared' '--with-gd=shared' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-zlib-dir=/usr' '--with-xpm-dir=/usr' '--with-freetype-dir=/usr' '--with-gettext=shared' '--with-gmp=shared' '--with-mhash=shared' '--with-iconv=shared' '--with-imap=shared' '--with-imap-ssl' '--with-ldap=shared' '--with-mcrypt=shared' '--with-msql=shared' '--with-mysql=shared,mysqlnd' '--with-mysql-sock=/No-MySQL-hostname-was-specified' '--with-mysqli=shared,mysqlnd' '--with-pdo-mysql=shared,mysqlnd' '--with-pdo-pgsql=shared' '--with-pdo-sqlite' '--with-pgsql=shared' '--with-pspell=shared' '--with-readline=shared' '--with-tidy=shared' '--with-xmlrpc=shared' '--with-xsl=shared'

编辑

从命令行运行

sudo -u myuser /usr/local/php54/bin/php -i > ~/phpinfo.txt

给出相同的 phar 设置:

PHP Version => 5.4.11

System => Linux ps29943 3.1.9-vs2.3.2.5vs2.3.2.5+ #3 SMP Wed Feb 12 13:51:29 PST 2014 x86_64
Build Date => Feb  5 2013 18:44:25
Configure Command =>  './configure'  '--prefix=/usr/local/php54' '--datadir=/usr/local/php54/share' '--localstatedir=/usr/local/php54/var' '--without-pear' '--with-config-file-path=/etc/php54' '--with-config-file-scan-dir=/etc/php54/conf.d' '--with-zend-vm=GOTO' '--enable-cgi' '--enable-fpm' '--enable-libxml=shared' '--enable-bcmath=shared' '--enable-calendar=shared' '--enable-ctype=shared' '--enable-dom=shared' '--enable-exif=shared' '--enable-fileinfo=shared' '--enable-filter=shared' '--enable-ftp=shared' '--enable-hash=shared' '--enable-intl=shared' '--enable-json=shared' '--enable-mbstring' '--enable-mbregex' '--enable-mbregex-backtrack' '--enable-pcntl=shared' '--enable-pdo' '--enable-phar=shared' '--enable-posix=shared' '--enable-session=shared' '--enable-shmop=shared' '--enable-simplexml=shared' '--enable-soap=shared' '--enable-sockets=shared' '--enable-sysvmsg=shared' '--enable-sysvsem=shared' '--enable-sysvshm=shared' '--enable-tokenizer=shared' '--enable-wddx=shared' '--enable-xml=shared' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--enable-zip=shared' '--with-openssl=shared' '--with-kerberos' '--with-pcre-regex' '--with-sqlite3' '--with-zlib=shared' '--with-bz2=shared' '--with-curl=shared' '--with-gd=shared' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-zlib-dir=/usr' '--with-xpm-dir=/usr' '--with-freetype-dir=/usr' '--with-gettext=shared' '--with-gmp=shared' '--with-mhash=shared' '--with-iconv=shared' '--with-imap=shared' '--with-imap-ssl' '--with-ldap=shared' '--with-mcrypt=shared' '--with-msql=shared' '--with-mysql=shared,mysqlnd' '--with-mysql-sock=/No-MySQL-hostname-was-specified' '--with-mysqli=shared,mysqlnd' '--with-pdo-mysql=shared,mysqlnd' '--with-pdo-pgsql=shared' '--with-pdo-sqlite' '--with-pgsql=shared' '--with-pspell=shared' '--with-readline=shared' '--with-tidy=shared' '--with-xmlrpc=shared' '--with-xsl=shared'
Server API => Command Line Interface

【问题讨论】:

您是否在命令行上运行了php -i?它是否告诉您有关 phar 的相同信息?请注意,PHP 的命令行版本很可能使用与 Web 服务器版本不同的 php.ini。 感谢您的回复!在这种情况下,它与命令行相同。我现在已经将该输出添加为上面的编辑。 【参考方案1】:

Ubuntu 16.04 ++

sudo apt install composer 

【讨论】:

【参考方案2】:

根据我对类似问题的了解,当您在 php.ini 中实际包含该扩展时,缺少扩展错误应该会消失。

首先,扫描现有文件phar.so - 它应该在/usr/local/php54/lib 左右。

然后检查/etc/php54/conf.d中是否有任何等待启用的配置痕迹。之后,没有发现任何看起来像是连接到 phar 的东西,请检查 [extension] 部分中的/etc/php54/php.ini。可能有一行注释掉,其中包含如下内容:extension = phar.so。激活它。

之后,php -m 应该会为您提供一个已激活扩展的列表,包括 phar 扩展。不需要在命令行重启PHP,因为没有需要重启的持久化进程。

如果这一切都失败了,你可能不得不接受“是”作为“我必须重新编译吗?”的答案,但我怀疑你安装的 PHP 没有共享扩展 .so 文件。即使没有,安装包含该扩展的缺失包可能更容易。

【讨论】:

谢谢!!非常感谢您的帮助! ini 编辑做到了。它不存在所以我添加了extension = phar.so 并且 php -m 显示了 Phar。现在我将开始研究新的错误... :( 我没有编辑 conf.d 或 php.ini 的权限,但我发现登录到我的主机的 cPanel,在选择 PHP 版本下,我能够通过该界面启用 phar。

以上是关于--enable-phar=shared 我是不是必须重新编译 PHP 才能安装 Composer?的主要内容,如果未能解决你的问题,请参考以下文章

`shared_ptr::use_count() == 0` 和 `shared_ptr::get() != nullptr` 是不是可能?

shared_ptr.get() 是不是可以被多个线程调用,而另一个线程锁定并调用 shared_ptr.swap()?

std::shared_mutex 是不是偏爱作者而不是读者?

在 msvs 2013 中 std::shared_ptr 的 compare_exchange_weak 是不是损坏?

shared_ptrs 是不是由于引用计数器原子递增/递减而遇到缓存未命中?

检查 Boost Interprocess managed_shared_memory 是不是已经存在? [复制]