iT邦幫忙

0

使用php來執行puppeteer的錯誤

  • 分享至 

  • xImage

不好意思,請問一下
目前在centos7上裝了node與puppeteer,幾番測試後,
若透過主機執行,node test.js

const puppeteer = require('puppeteer');

async function runTest() {
  try {
    const browser = await puppeteer.launch({
    executablePath: '/usr/bin/chromium-browser',
    headless: true,
    args: ['--no-sandbox'],
    });
  const page = await browser.newPage();
  await page.goto('https://www.google.com.tw');
  await page.screenshot({path: 'example2.png'});

  await browser.close();
  } catch (error) {
    console.error('Error:', error);
  }
}
runTest();

或是
php test.php

$command = 'node test.js';
shell_exec($command .' 2\>&1');

都可以正常產生png,
但若是透過瀏灠器來執行,http://192.168.0.55/puppeteer/test.php
則會回傳錯誤

Error: ErrorEvent {
  [Symbol(kTarget)]: WebSocket {
    _events: [Object: null prototype] { open: [Function], error: [Function] },
    _eventsCount: 2,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 3,
    _receiver: null,
    _sender: null,
    _socket: null,
    _bufferedAmount: 0,
    _isServer: false,
    _redirects: 0,
    _url: 'ws://127.0.0.1:43327/devtools/browser/6d920376-454b-4a10-b07d-479af2d                     a9ca9',
    _originalIpc: false,
    _originalSecure: false,
    _originalHostOrSocketPath: '127.0.0.1:43327',
    _req: null,
    [Symbol(kCapture)]: false
  },
  [Symbol(kType)]: 'error',
  [Symbol(kError)]: Error: connect EACCES 127.0.0.1:43327 - Local (0.0.0.0:0)
      at internalConnect (node:net:1041:16)
      at defaultTriggerAsyncIdScope (node:internal/async_hooks:464:18)
      at node:net:1134:9
      at processTicksAndRejections (node:internal/process/task_queues:78:11) {
    errno: -13,
    code: 'EACCES',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 43327
  },
  [Symbol(kMessage)]: 'connect EACCES 127.0.0.1:43327 - Local (0.0.0.0:0)'
}

請問有人了解這個錯誤嗎,是跟防火牆有關嗎? 感謝回答 Orz
是在同一台本機上執行的哦。感謝你的回應.

DanSnow iT邦好手 1 級 ‧ 2023-06-12 18:23:59 檢舉
看到 CentOS 我猜是 selinux ,要不要看看有沒有相關的 log ?
sivle01 iT邦新手 5 級 ‧ 2023-06-13 11:30:08 檢舉
感謝你的回答,我用sudo sealert -a /var/log/audit/audit.log
看上面建議,把允許存取都打開,就可以了,非常感謝你,謝謝。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0

由於資訊不太完全。

目前只能猜測與 127.0.0.1 有關係。

因為如果你是在你的SERVER機上跑。則請求的127.0.0.1也等同是你的SERVER機。
所以會有服務可以運行。

但如果是在其它機器上跑。其127.0.0.1是在其它機上的。但因為它並沒有相對的服務應用。
自然就跑錯誤出來了。

以上只是先猜測到的可能性。

我要發表回答

立即登入回答