ブラウザで「Node発火ボタン」を押すと$cmdのコマンドを発動させたいのですが、動きません。
▼top.php
<?php function autocsd() { $cmd = "/usr/local/bin/node /var/www/html/test/autoCsd.js"; exec($cmd, $opt, $return_ver); var_dump($opt); echo '実行結果:'.$return_ver; } if (isset($_GET['func'])) { autocsd(); } ?> <a href='top.php?func=true'>Node発火ボタン</a>
▼autoCsd.js
const puppeteer = require('puppeteer'); // 定数 (後述) const LOGIN_URL = 'xxx'; const LOGIN_ACCOUNT = 'xxx'; const LOGIN_USER = 'xxx'; const LOGIN_PASS = 'xxx'; const TARGET_URL = 'xxx'; const LOGIN_ACCOUNT_SELECTOR = 'input[name="loginidfield"]'; const LOGIN_USER_SELECTOR = 'input[name="accountidfield"]'; const LOGIN_PASS_SELECTOR = 'input[name="passwordfield"]'; const LOGIN_SUBMIT_SELECTOR = 'input[name="submit"]'; (async () => { const browser = await puppeteer.launch({//ブラウザを開く args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: false, // ブラウザを表示するか (デバッグの時は false にしたほうが画面が見えてわかりやすいです) }); const page = await browser.newPage(); // 新規ページ await page.setViewport({ width: 1440, height: 900 }); // ビューポート (ウィンドウサイズ) await page.setExtraHTTPHeaders({ // 必要な場合、HTTPヘッダを追加 'Accept-Language': 'ja' }); // ログイン画面でログイン await page.goto(LOGIN_URL, { waitUntil: 'domcontentloaded' }); await page.type(LOGIN_ACCOUNT_SELECTOR, LOGIN_ACCOUNT); // アカウント名入力 await page.type(LOGIN_USER_SELECTOR, LOGIN_USER); // ユーザー名入力 await page.type(LOGIN_PASS_SELECTOR, LOGIN_PASS); // パスワード入力 await Promise.all([ // ログインボタンクリック // クリック後ページ遷移後通信が完了するまで待つ (ページによっては 'domcontentloaded' 等でも可) page.waitForNavigation({ waitUntil: 'networkidle0' }), page.click(LOGIN_SUBMIT_SELECTOR), ]); // ログイン後の画面に移動 await page.goto(TARGET_URL); await Promise.all([ page.waitForNavigation({ waitUntil: 'networkidle0' }), page.click('#navi03 a'), ]); await page.select('select[name="fsForwardStatus"]','02'); //検索をクリック await page.click('input[name="imageField42"]'); await page.select('select[name="fsDownloadCode"]','02'); //ダウンロードをクリック await page.click('input[name="imageField4"]'); await sleep(1000); await browser.close(); })();
▼実行結果
array(0) { } 実行結果:0 Run PHP Function
autCsd.jsはpuppeteerで自動ログイン処理とCSVダウンロードを実行するファイルです。
コマンドで直接叩くと正常に動きます。
是非ご指摘いただきたく思います。
よろしくお願い致します^^
あなたの回答
tips
プレビュー