chrome-php / chrome

Instrument headless chrome/chromium instances from PHP
MIT License
2.25k stars 275 forks source link

Can't get this to work on MacOS #571

Open AtillaSE opened 9 months ago

AtillaSE commented 9 months ago

Installing the library seems to work, but on testing

use HeadlessChromium\BrowserFactory;

$browserFactory = new BrowserFactory();

// starts headless Chrome
$browser = $browserFactory->createBrowser();

Will result in an error:

Fatal error:  Uncaught HeadlessChromium\Exception\CommunicationException: Message could not be sent. Reason: the connection is closed. in /usr/local/var/www/linkchecker/vendor/chrome-php/chrome/src/Communication/Connection.php:253
Stack trace:
#0 /usr/local/var/www/linkchecker/vendor/chrome-php/chrome/src/Communication/Connection.php(269): HeadlessChromium\Communication\Connection->sendMessage('Message could n...')
#1 /usr/local/var/www/linkchecker/vendor/chrome-php/chrome/src/Browser.php(84): HeadlessChromium\Communication\Connection->sendMessageSync(Object(HeadlessChromium\Communication\Message))
#2 /usr/local/var/www/linkchecker/vendor/chrome-php/chrome/src/Browser/ProcessAwareBrowser.php(26): HeadlessChromium\Browser->__construct(Object(HeadlessChromium\Communication\Connection))
#3 /usr/local/var/www/linkchecker/vendor/chrome-php/chrome/src/Browser/BrowserProcess.php(161): HeadlessChromium\Browser\ProcessAwareBrowser->__construct(Object(HeadlessChromium\Communication\Connection), Object(HeadlessChromium\Browser\BrowserProcess))
#4 /usr/local/var/www/linkchecker/vendor/chrome-php/chrome/src/BrowserFactory.php(83): HeadlessChromium\Browser\BrowserProcess->start('/Applications/G...', Array)
#5 /usr/local/var/www/linkchecker/.test.php(14): HeadlessChromium\BrowserFactory->createBrowser()
#6 {main}
  thrown in /usr/local/var/www/linkchecker/vendor/chrome-php/chrome/src/Communication/Connection.php on line 253

I have tried to set the right path to Chromium in my environment.

msitarzewski commented 8 months ago

Curious, I'm using Laravel with a command and it works fine. Trying through the app with a route fails.

Update: Executed "sudo -u _www open -a Google\ Chrome" and it worked fine. Turned off Apache, and executed the same code through php artisan serve (which inherits my user environment) and it runs fine.

Is there something in macOS that prevents _www from opening a new chrome instance? I'll try disabling SIP as a test when I can.