Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel黄昏错误:无法连接到本地主机端口9515:连接被拒绝_Php_Laravel_Vagrant_Virtualbox_Homestead - Fatal编程技术网

Php Laravel黄昏错误:无法连接到本地主机端口9515:连接被拒绝

Php Laravel黄昏错误:无法连接到本地主机端口9515:连接被拒绝,php,laravel,vagrant,virtualbox,homestead,Php,Laravel,Vagrant,Virtualbox,Homestead,正如标题所说,我已经完全安装了Laravel 5.4和最新的Homestead(1.0.1)。然而,当我运行一个简单的黄昏测试用例时,我得到以下错误: 无法连接到本地主机端口9515:连接被拒绝 有人知道怎么处理吗?我尝试将端口更改为其他端口,如8888,但没有成功 编辑: 我已经能够深入挖掘,发现chromedriver可执行文件实际上不是可执行文件(chmod)。现在我已经修复了手动运行时出现的错误 ./chromedriver:加载共享库时出错:libnss3.so:无法打开共享对象文件:

正如标题所说,我已经完全安装了Laravel 5.4和最新的Homestead(1.0.1)。然而,当我运行一个简单的黄昏测试用例时,我得到以下错误:

无法连接到本地主机端口9515:连接被拒绝

有人知道怎么处理吗?我尝试将端口更改为其他端口,如
8888
,但没有成功

编辑: 我已经能够深入挖掘,发现
chromedriver
可执行文件实际上不是可执行文件(
chmod
)。现在我已经修复了手动运行时出现的错误

./chromedriver:加载共享库时出错:libnss3.so:无法打开共享对象文件:没有此类文件或目录


在Ubuntu Linux 16.04上,我实现了以下目标:

安装用于无头测试的Chromium和dependencies

sudo apt get-y安装chromium浏览器xvfb gtk2引擎pixbuf xfonts西里尔字母xfonts-100dpi xfonts-75dpi xfonts基本xfonts可缩放图像Magick x11应用程序

创建自定义
命令

使用此
句柄
方法扩展原始文件:

public function handle()
{
    $xvfb = (new ProcessBuilder())
        ->setTimeout(null)
        ->setPrefix('/usr/bin/Xvfb')
        ->setArguments(['-ac',  ':0', '-screen', '0', '1280x1024x16'])
        ->getProcess();

    $xvfb->start();

    try {
        parent::handle();
    } finally {
        $xvfb->stop();
    }

    return;
}
这将在执行测试之前启动Xvfb进行无头测试,并在测试完成后停止该过程


编辑:并确保
vendor/laravel/dusk/bin/chromedriver linux
是可执行的。

使用最新的laravel/homestead box v.6.0.0版本,它是开箱即用的


您的chrome驱动程序安装似乎已中断

您可以尝试从头开始安装它

CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`

wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/
unzip ~/chromedriver_linux64.zip -d ~/
rm ~/chromedriver_linux64.zip
sudo mv -f ~/chromedriver /usr/local/bin/chromedriver
sudo chown root:root /usr/local/bin/chromedriver
sudo chmod 0755 /usr/local/bin/chromedriver

这将帮助您下载最新版本的chrome驱动程序并将其正确解包

LATEST_VERSION=$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE) && wget -O /tmp/chromedriver.zip https://chromedriver.storage.googleapis.co /$LATEST_VERSION/chromedriver_linux64.zip && sudo unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/;

我今天遇到了这个问题,解决方案还在继续

这是一份

# makes sure all your repos are up to date
sudo apt-get update

# chrome dependencies I think
sudo apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4

# chromium is what I had success with on Codeship, so seemed a good option
sudo apt-get install chromium-browser

# XVFB for headless applications
sudo apt-get -y install xvfb gtk2-engines-pixbuf

# fonts for the browser
sudo apt-get -y install xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base         xfonts-scalable

# support for screenshot capturing
sudo apt-get -y install imagemagick x11-apps

# Once all this has run through, you need to fire up xvfb on your homestead box. If you’re planning to # do this on a regular basis, you’ll want to get this setup on boot, but for the sake of testing things out:
Xvfb -ac :0 -screen 0 1280x1024x16 &

创建自定义命令

namespace App\Console\Commands;

use Symfony\Component\Process\Process;

class DuskCommand extends \Laravel\Dusk\Console\DuskCommand {

    public function handle() {
        $xvfb = (new Process(['/usr/bin/Xvfb', '-ac', ':0', '-screen', '0', '1280x1024x16']))
                ->setTimeout(null);

        $xvfb->start();

        try {
            parent::handle();
        } finally {
            $xvfb->stop();
        }

        return;
    }

}
多亏了。这是过时的,没有工作,所以我提供了一个更新的答案,工程


更新:

我个人不再采用这种方法。部署到生产环境后,我遇到了以下错误:
E\u错误:找不到类'Laravel\dash\Console\dashcommand',
,因为我忘记了我的
composer.json
只在开发环境中安装了Dashm,而不是在生产环境中。如果您坚持“测试代码”不应部署到生产环境中的原则,那么这种编写扩展
\Laravel\dash\Console\dashcommand
的自定义类的方法可能不适合您(因为
dashcommand
依赖关系在生产环境中不存在)


无论如何,我将把这个答案留在这里,因为它希望对人们是一个有价值的警告。如果你认为我应该删除它,请发表评论。顺便说一句,Jonas Staudenmeir往往有很好的答案,所以。

对于那些在Mac上寻找解决方案的人,我只需要重新启动Chrome。是的,Chrome浏览器。这似乎是一个待定的更新(它在右上角说)


重新启动它,然后是chromedriver,使一切正常

对我来说,在
vendor/laravel/dusk/bin/chromedriver linux中chmod可执行文件就足够了。还有macOS
chromedriver linux
和windows
chromedriver win.exe
版本。您是在服务器或Homestead中通过SSH运行命令
php artisan Dask
?您需要
chrome浏览器
来运行浏览器测试,请尝试在主机操作系统中运行命令。一些参考在homestead
sudo apt get install libnss3 dev