1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel】PDF出力用にChrome PHPの環境(Windows)を整える

Posted at

LaravelでのPDF出力が微妙すぎて、いろいろ調べたところ、

がいい感じだったけど、環境が違うからちょっとハマった話。。

環境

・Windows10
・XAMPP
・Laravel 10

やったこと

とりあえず、Chrome PHPを入れたいので、
composer require chrome-php/chrome
をしたいけど、いろいろ文句言われるんで、

composer require chrome-php/wrench
を先に。


composer require chrome-php/chrome
を。

そして上のすばらしい方法にトライしたところ、formatがどうとか、intlがどうとか文句言ってくるんで、

PHPini の

;extension=sockets
;extension=intl
のふたつを

extension=sockets
extension=intl

に。

すると、

Undefined variable $browser

と言われる。

$browserFactory = new BrowserFactory();
$browser = $browserFactory->createBrowser();

この時点で引っかかってる。 つまり、一行目で引っかかってる。。

Chrome PHP

公式のUsageのところの説明を見たところ、

Using different Chrome executable
When starting, the factory will look for the environment variable "CHROME_PATH" to use as the Chrome executable. If the variable is not found, it will try to guess the correct executable path according to your OS or use "chrome" as the default.

You are also able to explicitly set up any executable of your choice when creating a new object. For instance "chromium-browser":
とのこと。
つまり、Chromeのパスを入れろと。。。

方向性はわからんでもないけど、具体的にどうしろってのがちょっと微妙。。
ググってもいまいちぱっとしないんで、いろいろ試してみた。

// $browserFactory = new BrowserFactory('C:\Program Files\Google\Chrome\Application');
// $browserFactory = new BrowserFactory('C:\Program Files (x86)\Google\Chrome\Application\chrome');
// $browserFactory = new BrowserFactory('/usr/bin/chromium-browser');
// $browserFactory = new BrowserFactory('chromium-browser');
// $browserFactory = new BrowserFactory('chrome');
// $browserFactory = new BrowserFactory();

$browser = $browserFactory->createBrowser();

解決

結局上から2番目の、

$browserFactory = new BrowserFactory('C:\Program Files (x86)\Google\Chrome\Application\chrome');

$browser = $browserFactory->createBrowser();

できれいに表示された。

公式が言ってるようにCHROME-PATHを入れただけで解決した。。

補足

一番有力なのは、公式通り、

$browserFactory = new BrowserFactory();

だが、
dd($browserFactory); で調べると、

パスを入れた方は、

$browserFactory = new BrowserFactory('C:\Program Files (x86)\Google\Chrome\Application\chrome');
ならdd($browserFactory); で↓
 #chromeBinary: "C:\Program Files (x86)\Google\Chrome\Application\chrome"
(こっちはOK)

公式通りな方は、

$browserFactory = new BrowserFactory();
ならdd($browserFactory); で↓
#chromeBinary: "%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe"
(こっちはアウト)

で、おしい。。。でもこういうちょっとカスってるのが一番初心者泣かせ。。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?