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"
(こっちはアウト)
で、おしい。。。でもこういうちょっとカスってるのが一番初心者泣かせ。。。