MAC安裝v8js

前言

mac版v8js的安裝真的是各種問題,相信大家嘗試過的都深有感觸,我在網上找了各種教程,大多都是千篇一律,而且大多數都是老版本 即使最新的也有很多問題,最終在
GitHub issues 找到了解決方案,因此在此記錄一下

版本

  • Mac os:10.15.1
  • PHP:7.2.30
  • PECL:1.10.11

lizaimin$ sw_vers  
ProductName:    Mac OS X
ProductVersion: 10.15.1  
BuildVersion:   19B88
lizaimin$ php -v 
PHP 7.2.23 (cli) (built: Oct  3 2019 19:50:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.23, Copyright (c) 1999-2018, by Zend Technologies
lizaimin$ pecl version 
PEAR Version: 1.10.9
PHP Version: 7.2.23
Zend Engine Version: 3.2.0  
Running on: Darwin lizaiminMacBook.local 19.0.0 Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64 x86_64

安裝v8

  1. 確保你的系統沒有安裝過v8,如果有安裝, 刪除。
  2. brew install v8
  3. 安裝成功后在 /usr/local/Cellar/v8/********/ 可以看到

注意注意注意注意注意注意注意注意注意注意注意注意

  1. 查看 /usr/local/Cellar/v8/********/libexec 下面有沒有lib目錄 沒有的話 執行創建
    mkdir -p /usr/local/Cellar/v8/7.4.288.25/libexec/lib

  2. 把libexec下面的的所有文件拷貝一份, 放到lib下面。
    cp /usr/local/Cellar/v8/*******/libexec/* /usr/local/Cellar/v8/******/libexec/lib
    其中*****號為你安裝的目錄版本號
    做這一步的目的是, 安裝v8js的時候, 默認是取lib目錄下面去找。不做處理的話會一直報 下面錯誤。不管是pecl 還是自己編譯都不會通過。

     Please reinstall the v8 distribution  
    

安裝v8js擴展

注意v8js對應目錄替換為你安裝的v8目錄

安裝方式1

  • 將v8js克隆到本地: git clone https://github.com/phpv8/v8js

  • 從源代碼構建v8js:

    git clone  https://github.com/phpv8/v8js
    cd v8js
    phpize
    ./configure CXXFLAGS="-Wno-c++11-narrowing" --with-v8js="/usr/local/Cellar/v8/7.4.288.25/libexec"
    make && make install  
    

安裝方式2

      sudo pecl install v8js

在PHP中啟用v8js

  • 查找php.ini文件

    ?  ~ php --ini 
    Configuration File (php.ini) Path: /usr/local/etc/php/7.2 
    Loaded Configuration File:         /usr/local/etc/php/7.2/php.ini
    Scan for additional .ini files in: /usr/local/etc/php/7.2/conf.d
    Additional .ini files parsed:      /usr/local/etc/php/7.2/conf.d/ext-opcache.ini,
    
  • 打開php.ini文件

    vim /usr/local/etc/php/7.2/php.ini
    
  • 將此行添加到開頭并保存ini文件: extension =”對應目錄/v8js.so”

  • 重啟php

測試

    <?php
    $v8 = new V8Js();
    /* basic.js */
    $JS = <<< EOT
    len = print('Hello' + ' ' + 'World!' + "\\n");
    len;
    EOT;
    try {
      var_dump($v8->executeString($JS, 'basic.js'));
    } catch (V8JsException $e) {
      var_dump($e);
    }
 ?>
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。