眼镜:
Ubunutu 16.04.1服务器
nginx 1.10
HHVM 3.17.0

我正在尝试收集文件列表,并通过以下代码通过hhvm编译器运行它们以利用 repo 模式:

#!/bin/bash

if [ "$(whoami)" != "root" ]; then
    echo "Only root can do this.";
    exit 1;
else

    if [ $# -eq 0 ]; then
        echo "Please pass the account name to enable this for"
        exit 1;
    else

        #Get a list of files
        FLIST=$(find /home/$1/www/ -type f -name '*.php');
        for F in $FLIST
        do
            if [ -f $F ]; then
                echo "Adding; $F";
                echo $F >> $1-list.txt;
            fi;
        done;
        hhvm --hphp -t hhbc -v AllVolatile=false -v WholeProgram=false --input-list $1-list.txt;
        sleep 1;
        rm -f $1-list.txt;
    fi;

fi;

在服务器上运行它后,将看到以下内容:
running hphp...
creating temporary directory /tmp/hphp_cFPMUQ ...
parsing inputs...
Unable to stat file /home/kpirnie/www/wp-content/PHPMailer/vendor/autoload.php
Unable to stat file /home/kpirnie/www/wp-content/PHPMailer/test/vendor/autoload.php
Unable to stat file /home/kpirnie/www/wp-content/PHPMailer/test/testbootstrap.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/cloudflare/vendor/cloudflare/cf-ip-rewrite/vendor/autoload.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/cloudflare/vendor/guzzle/guzzle/phing/tasks/phing/Task.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/cloudflare/vendor/guzzle/guzzle/phar:/guzzle.phar/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/cloudflare/vendor/guzzle/guzzle/phing/tasks/PEAR/PackageFileManager2.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/cloudflare/vendor/guzzle/guzzle/phing/tasks/PEAR/PackageFileManager/File.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/cloudflare/vendor/guzzle/guzzle/phing/tasks/PEAR/Packager.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/cloudflare/vendor/guzzle/guzzle/phing/tasks/phing/tasks/ext/git/GitBaseTask.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/cloudflare/vendor/sebastian/comparator/vendor/autoload.php
Unable to stat file /home/kpirnie/www/wp-content/plugins/wordpress-seo/vendor/composer/autoload_static.php
parsing inputs took 0'01" (1425127 us) wall time
pre-optimizing...
Core dumped: Segmentation fault
Stack trace in /tmp/stacktrace.31028.log
hphp failed
running hphp took 0'02" (2216979 us) wall time

而且我可以验证Unable to stat的文件确实不存在。

Stacktrace显示由于段错误而看起来像是内存转储(我假设)。

如何完成真正的 repo 模式?跳过丢失的文件?但是如何?

最佳答案

如果您的源中没有任何内容像您所说的那样引用这些文件,请尝试将空文件放在这些位置。

但是,很可能您是通过包含这些文件的路径来引用这些文件的。我怀疑这是HHVM问题,您应该提交失败的测试用例here

关于php - HHVM RepoMode分段故障,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41449822/

10-13 02:43