web-dev-qa-db-ja.com

Laravel夕暮れのエラー:localhostポート9515への接続に失敗しました:接続は拒否されました

タイトルにあるように、Laravel 5.4と最新のHomestead(1.0.1)をクリーンインストールしました。ただし、単純なDuskテストケースを実行すると、次のエラーが表示されます。

Localhostポート9515への接続に失敗しました:接続が拒否されました

誰もこれに対処する方法を知っていますか?ポートを8888などの別のものに変更してみましたが、役に立ちませんでした。

編集:私はもう少し掘り下げることができましたが、chromedriver実行可能ファイルは実際には実行可能ではないことがわかりました(chmod)。手動で実行しようとすると、このエラーが表示されることが修正されました。

./chromedriver:共有ライブラリのロード中のエラー:libnss3.so:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません

37
Ortix92

クロムドライバーのインストールが壊れているようです。

最初からインストールしてみることができます

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
1
Utkarsh Vishnoi

Ubuntu Linux 16.04では、これが機能するようになりました。

ヘッドレステスト用のChromiumと依存関係のインストール

Sudo apt-get -y install chromium-browser xvfb gtk2-engines-pixbuf xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable imagemagick x11-apps

custom DuskCommandを作成

次のhandleメソッドを使用して、オリジナルを拡張します。

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は実行可能です。

1
stephangroen

これは、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/;
0
user6437700

最新のlaravel/Homestead box v.6.0.0では、そのまま使用できます

https://app.vagrantup.com/laravel/boxes/Homestead

0
ndberg

customDuskCommandを作成します

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;
    }

}

https://stackoverflow.com/a/44322930/470749 に感謝します。それは時代遅れで動作しなかったので、動作する更新された回答を提供しています。

0
Ryan

私は今日この問題を抱えていましたが、解決策は Laracasts です

これがコピーです。

# 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 &
0
SimonDepelchin