在 macOS 上安装 V8 历史版本 (v8@11) 和 PHP v8js 扩展

安装 V8 旧版本(v8@11)

由于 Homebrew 默认提供的是最新版本的 V8,并没有提供历史版本,所以需要手动安装旧版本(v8@11)。

    1. 首先找到旧版.rb文件

      • 访问GitHub:https://github.com/Homebrew/homebrew-core,搜索v8,找到Formula/v/v8.rb,点击进去。
      • 查看历史版本: 点击 历史记录History)查看历史版本。可以看到每个版本的提交记录,找到需要的版本v8: update 11.7.439.16 bottle。点击右侧”View code…”按钮,进入相应页面,地址:https://github.com/Homebrew/homebrew-core/blob/95633752a9ef504d8bec644794d418b8a816ebcf/Formula/v/v8.rb。
    2. 点击下载按钮,下载.rb文件

    3. 手动安装历史版本

      brew install ~/Downloads/v8.rb
      
    4. 添加PATH

      sudo vim ~/.zshrc
      在适当地方输入:export PATH="$(brew --prefix v8)/bin:$PATH"
      source ~/.zshrc
      
    5. 创建符号链接

      ln -s $(brew --prefix v8)/bin/d8 $(brew --prefix v8)/bin/v8
      
    6. 输入命令v8或d8查看,可以看到v8版本信息,使用quit()退出

      v8
      v8 > quit()

安装php v8js扩展

      1. 从github下载并编译安装

        # 克隆并切换到 php7 分支
        git clone https://github.com/phpv8/v8js
        cd v8js
        git checkout -b php7 origin/php7
        
        # 配置并编译
        phpize
        ./configure \
          LDFLAGS="-lstdc++" \
          CPPFLAGS="-DV8_COMPRESS_POINTERS -DV8_ENABLE_SANDBOX" \
          --with-php-config="$(which php-config)" \
          --with-v8js="$(brew --prefix v8)/libexec"
        
        make
        make test
        make install
        
        
      2. 修改php.ini,添加v8js扩展

        extension="v8js.so"
        
      3. 重启php

        brew services restart php@7.4
      4. 验证安装

        php -m | grep v8js
        
      5. 编写测试程序

        <?php
        // 检查是否加载了 v8js 扩展
        if (!extension_loaded('v8js')) {
            echo "v8js 扩展没有安装或启用。\n";
            exit(1);
        }
        
        // 创建 V8js 实例
        $v8 = new V8Js();
        
        // 测试简单的 JavaScript 代码
        $js_code = 'var message = "Hello from V8JS!"; message;';
        try {
            $result = $v8->executeString($js_code);
            echo "JavaScript 结果: " . $result . "\n";
        } catch (V8JsException $e) {
            echo "执行 JavaScript 代码时发生错误: " . $e->getMessage() . "\n";
        }
        
      6. 测试程序
        php test_v8js.php
        

        如果一切正常,将输出:

        JavaScript 结果: Hello from V8JS!
        

         

    本文由@大鱼原创发布于今日指点,转载请附带链接。

    本文链接:https://www.jinrizhidian.com/tech/2149.html

    发表评论