【问题标题】:Install intl PHP extension OSX High Sierra安装国际 PHP 扩展 OSX High Sierra
【发布时间】:2018-03-21 01:09:05
【问题描述】:

如何在 PHP 7.1.7 中安装 intl PHP 扩展,它是随 osx high sierra 提供的?

【问题讨论】:

    标签: php intl macos-high-sierra


    【解决方案1】:

    我找到了解决办法。

    curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1
    

    然后我将 intl.so 从安装复制到我的扩展目录,该目录定义在我的 php.ini 中。

    【讨论】:

    • 你能再详细一点吗?执行上述命令后 intl.so 位于何处。
    • php -i | grep 扩展
    • 实际上在尝试 sudo cp /usr/local/php5-7.1.13-20180201-134129/lib/php/extensions/no-debug-non-zts-20160303/intl.so /usr/ 时lib/php/extensions/no-debug-non-zts-20160303/intl.so 我得到 Operation not allowed - 将尝试切换 php 的版本而不仅仅是扩展。更多信息在这里php-osx.liip.chwebsitebeaver.com/…
    【解决方案2】:

    除了L. Grolleau says(运行brew install php71-intl)之外,将int.so路径粘贴到文件末尾的/php.ini

    extension=/usr/local/Cellar/php71-intl/7.1.11_20/intl.so
    

    【讨论】:

      【解决方案3】:

      打开终端然后输入:

      brew search intl
      

      你应该可以看到php71-intl,然后运行

      brew install homebrew/php/php71-intl
      

      然后重启apache

      sudo apachectl restart
      

      然后输入:

      php -i | grep intl
      

      你应该能够看到这样的东西:

      Additional .ini files parsed => /usr/local/etc/php/7.1/conf.d/ext-intl.ini
      intl
      intl.default_locale => no value => no value
      intl.error_level => 0 => 0
      intl.use_exceptions => 0 => 0
      

      享受吧!

      【讨论】:

      • 自 2018 年 4 月 1 日起,homebrew/php 选项卡已被弃用。现在交付 PHP 及其扩展的新方式是……一团糟。有些扩展是捆绑的,有些不是。
      • 弃用php tap的人是个十足的***。在最新的 sierra 更新和 brew 升级之后,一切都崩溃了。如果您弃用某些东西以支持其他东西,请检查其他东西是否有效......如果有人设法让国际重新启动并运行,请回复。我尝试通过 pecl 安装,但这只会引发更多错误。
      • $ brew uninstall php71 然后brew install php71 --with-pear
      • php 已移至homebrew/core。公式重命名为php@7.1。它包含intl默认,无需手动加载或安装扩展。
      • @miguelr 它的工作,但我收到一堆关于PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-intl/intl.so' - dlopen(/usr/local/opt/php71-intl/intl.so, 9): Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.60.dylib 的警告。有什么想法吗?
      【解决方案4】:

      试试这个

      brew install homebrew/php/php71-intl
      

      【讨论】:

        【解决方案5】:

        我已经解决了这个问题。

        首先使用 brew 完全卸载所有 php 包,然后运行 ​​brew updatebrew doctor 命令。

        现在使用brew install php@7.1 安装(根据需要更改版本)intl 包含在所有 php 公式的构建中。

        要确认它正在运行,请运行 php -m | grep intl。您将看到包含 intl 扩展名。如果不检查 php.ini 文件并确保正在加载扩展。

        【讨论】:

        • 你不需要检查 php.ini,因为扩展是内置的。
        【解决方案6】:

        我在 OS High Sierra 上运行 brew 1.6.2。到目前为止,brew 包中没有 intl 扩展。

        @Mondy 解决方案对我来说效果很好。运行后

        curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1
        

        这些软件包将在 /usr/local/php5 或 /usr/local/php5-7.0.27-20180201-135220 中提供。

        因此,在您的 /usr/local/etc/php/7.0/php.ini 中,您可以放置​​以下行来启用 intl 扩展:

        [intl]
        extension="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20151012/intl.so"
        

        就我而言,我更喜欢在 /usr/local/etc/php/7.0/conf.d/ 中创建一个文件 'ext-intl.ini',只是为了更好地组织。

        【讨论】:

        • intl.so 在哪里?
        • 我能够安装在 macox high sierra 上。但首先遇到了问题PHP Warning: PHP Startup: intl: Unable to initialize module Module compiled with module API=20170718 PHP compiled with module API=20160303 These options need to match in Unknown on line 0
        • 这对我有用!我使用了 extension="/usr/local/php5-7.1.21-20180903-114446/lib/php/extensions/no-debug-non-zts-20160303/intl.so"。您将在安装的输出中找到确切的路径。
        • 这对我也有用,我只是直接从https://s3-eu-west-1.amazonaws.com/php-osx.liip.ch/install/5.6-10.10/frontenddev/5.6-10.10-frontenddev-5.6.36-20180703-123509.tar.bz2 下载了所需的文件(在我的情况下是 php 5.6),并将intl.so 复制到xamppfiles/lib 并更新php.ini对应的链接。
        【解决方案7】:

        brew/php 集成到brew/core 后,默认安装包含intl 扩展名。我也有同样的问题 intl 扩展不工作。我遇到的问题是命令行环境没有使用已安装的 PHP 版本,而是使用 macOS 系统的默认版本。

        要启用已安装的版本,您需要这样做:

        之后 brew install php@7.1

        您需要通过以下方式链接已安装的 PHP 版本 brew link php@7.1

        然后你需要打开一个新的终端来使它生效。
        然后仔细检查 PHP 二进制路径, which php

        确保它是 /usr/local/bin/php 代替 /usr/bin/php

        然后检查是否启用了 intl 扩展, php -m | grep intl

        它对我有用。

        【讨论】:

        • 我现在尝试了很多解决方案,但这一个对我有用,非常感谢。
        【解决方案8】:

        所以我遇到了完全相同的问题。正如这里评论的其他人所指出的,High Sierra 安装了 PHP 7.1,并且这个 PHP 版本已经用它进行了 intl 编译

        就我而言,我在以下Valet+ issue 中关注了Neodork 的部分评论:

        “安装”PHP 7.1(所以它来自 brew 本身,而不是 High Sierra 安装的那个)

        brew install php@7.1

        升级到最新版本

        brew upgrade php@7.1

        地窖中引用的符号链接:

        brew link --overwrite --force php@7.1

        在我的 bash 配置文件中更改 PHP 路径

        echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.bash_profile
        echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.bash_profile
        

        重新加载您的 bash 配置文件(您可以关闭终端并再次打开它)

        . ~/.bash_profile

        检查国际

        php -m | grep intl

        注意:如果您遇到如下警告:

        PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-intl/intl.so'

        那你要禁用之前的intl:

        mv /usr/local/etc/php/7.1/conf.d/ext-intl.ini /usr/local/etc/php/7.1/conf.d/ext-intl.ini.disabled

        希望对你有帮助!

        【讨论】:

        • 非常有帮助!谢谢!
        • brew link --overwrite --force php@7.1 // 链接 /usr/local/Cellar/php@7.1/7.1.25... // 错误:无法符号链接 sbin/php- fpm // /usr/local/sbin 不可写。
        • @NathanJ.Brauer 很好。似乎人们也对此有疑问。检查目录是否存在。如果ls -la /usr/local/sbin/ 弹出某些内容,则检查它的权限。否则,您必须创建它并使用 sudo mkdir /usr/local/sbin && sudo chown -R `whoami`:admin /usr/local/sbin 之类的东西调整正确的权限。信息是从这里提取的:github.com/Homebrew/homebrew-php/issues/4527
        • @NathanJ.Brauer 我遇到了同样的错误。我还是导出了新路径,打开了一个新终端,which php 指向/usr/local/opt/php@7.1/bin/php。检查它是否适合你
        • 对于那些和我一样嗜酒如命的人,应该更新上面引用的 7.1 以引用您所需的版本。截至目前,Brew 无法找到 7.1 参考,因为 7.4 是我需要的参考。在继续之前仔细检查您需要的版本,不像我最后一个小时......;)
        【解决方案9】:

        删除以下文件
        rm /usr/local/etc/php/7.1/conf.d/ext-intl.ini
        

        为我工作,感谢homebrew-core Issue

        【讨论】:

          【解决方案10】:

          在 Mac 上试试这个

          php -v
          sudo port install php7*-intl
          

          更多信息

          你可以通过这个页面https://www.macports.org/ports.php?by=name&substr=intl找到端口包

          您可以通过以下步骤安装porthttps://guide.macports.org/chunked/installing.macports.html

          curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.5.4.tar.bz2
          tar xf MacPorts-2.5.4.tar.bz2
          cd MacPorts-2.5.4/
          ./configure
          make
          sudo make install
          

          然后更改 ~/.bash_profile

          export PATH=/opt/local/bin:/opt/local/sbin:$PATH
          

          如果有错误,请检查以下步骤:

          检查端口

          sudo port list
          sudo port selfupdate
          sudo port search --name --glob 'php*'
          sudo port install php**-intl
          

          此页面有更多关于端口使用的信息:https://guide.macports.org/chunked/using.html

          【讨论】:

          • 有趣的概念,但是 MacPorts 项目绝对是一团糟,甚至没有适用于 macOs Catalina 的工作版本,它现在已经超过 1 年了,几乎安装在世界上的每台 Mac 上跨度>
          【解决方案11】:

          我用 brew 安装了 php7.2 并在 Mac 上与该版本链接,但在 phpinfo() 中甚至看不到版本号 7.2。 即使使用 brew 卸载,它也始终显示最新版本(7.1),因此是 intl 扩展。 我发现我们必须修改 httpd.conf 文件(在我的例子中是 /etc/apache2/httpd.conf),在那个文件中你可以找到

          LoadModule php7_module libexec/apache2/libphp7.so
          

          在该行中,您必须使用新的 php72 路径覆盖:在我的情况下是

           LoadModule php7_module /usr/local/Cellar/php@7.2/7.2.31_1/lib/httpd/modules/libphp7.so
          

          然后重启apache,就可以正常使用了。

          【讨论】:

            猜你喜欢
            • 2021-09-01
            • 2018-11-01
            • 2010-11-29
            • 1970-01-01
            • 2016-04-08
            • 2018-12-08
            • 1970-01-01
            • 2018-03-26
            • 1970-01-01
            相关资源
            最近更新 更多