Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11PHP cannot run Puppeteer’s API directly. Puppeteer is a JavaScript library, so the reliable design is PHP → Node.js script or service → Puppeteer → Chrome. On a cPanel VPS, first verify that your provider exposes Node.js (through Passenger/Application Manager or CloudLinux Node.js Selector), then install Puppeteer and its browser for the same account that PHP will use. PHP can launch a fixed Node script with proc_open(), pass validated input, and read a structured result.
What you need before writing code
cPanel itself does not guarantee a Node.js runtime, Passenger, Chrome, or the Linux libraries Chrome requires. Ask the VPS provider or administrator to confirm:
- The VPS distribution and cPanel package prerequisites are supported.
- Node.js is installed and your account may run a Node application.
- Passenger/Application Manager or CloudLinux Node.js Selector is enabled.
- Your account can create executable files and run child processes from PHP-FPM.
- Chrome’s required shared libraries can be installed, and the host permits the Chrome sandbox.
- Process, memory, CPU, request-timeout, and background-worker limits for your plan.
Run application setup as the cPanel account, not root. cPanel’s documentation explicitly warns: “Do not perform these steps as the root user, as this is a security risk.”
Choose an integration architecture
| Approach | Best for | Trade-offs |
|---|---|---|
| PHP child process | Small jobs and simple deployments | Each request may pay Node and browser startup cost; web-request timeouts matter. |
| Persistent Node service | Frequent or concurrent captures | Needs supervision, a local endpoint or queue, and provider support for a long-running process. |
| Queued worker | Slow, variable, or bursty jobs | Requires job storage and status handling, but keeps browser work out of the user’s HTTP request. |
Start with a child process if jobs are short. Move to a persistent service or queue when navigation and rendering can exceed your PHP, Passenger, proxy, or provider limits. Those limits differ by host; there is no universal cPanel timeout.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Create the Node.js Puppeteer project
- Use the account’s application directory. For example,
/home/CPANEL_USER/nodeapp. Keep the project, lockfile, script, and browser cache readable and executable by that account. - Confirm Node. From SSH as the cPanel user, run
node --versionandnpm --version. The exact binary path on cPanel installations varies; common EasyApache paths are provider-specific. - Initialize and install.
cd /home/CPANEL_USER/nodeapp npm init -y npm install puppeteerPuppeteer normally downloads a compatible Chrome for Testing. Its documentation estimates the Linux download at approximately 282 MB; treat that as an approximate download size, not a guaranteed total disk requirement.
- If the browser download was blocked, install it explicitly.
npx puppeteer browsers installPackage-manager policies can install the package while suppressing its browser-install script.
- Understand the alternative.
puppeteer-coredoes not download Chrome. Use it only when you manage a browser separately, and provide an explicit executable path, channel, or remote connection.
The browser cache normally belongs to the installing user’s home cache directory. Installing as one user and running through PHP as another is a common cause of “Chrome not found.” Keep the installation user, runtime user, cache configuration, and project permissions aligned.
Build a bounded Node script
Create render.js in the project directory. This example accepts one URL, limits navigation time, emits JSON on standard output, and always closes the browser.
const puppeteer = require('puppeteer');
const target = process.argv[2];
if (!target || !/^https?:\/\//i.test(target)) {
console.error('A valid http or https URL is required');
process.exit(2);
}
(async () => {
let browser;
try {
browser = await puppeteer.launch({
// Do not add --no-sandbox routinely; investigate host policy first.
headless: true
});
const page = await browser.newPage();
page.setDefaultNavigationTimeout(30000);
await page.goto(target, { waitUntil: 'networkidle2' });
const title = await page.title();
const html = await page.content();
console.log(JSON.stringify({ ok: true, title, htmlLength: html.length }));
} catch (error) {
console.error(error.stack || String(error));
process.exitCode = 1;
} finally {
if (browser) await browser.close();
}
})();
For production, validate allowed schemes and, if this accepts user URLs, defend against server-side request forgery with an allowlist or network policy. For complex input, send a defined JSON document over stdin rather than interpolating values into shell text.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Launch Node safely from PHP
PHP 7.4 and later supports an argument array in proc_open(). It starts the executable directly instead of asking a shell to parse a composed command string. Use absolute paths, fixed script locations, separate stdout and stderr, and close pipes before waiting for the process.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →<?php
$url = filter_input(INPUT_POST, 'url', FILTER_VALIDATE_URL);
if (!$url || !preg_match('/^https?:\/\//i', $url)) {
http_response_code(400);
exit('Invalid URL');
}
$command = [
'/opt/cpanel/ea-nodejs22/bin/node',
'/home/CPANEL_USER/nodeapp/render.js',
$url,
];
$spec = [
0 => ['pipe', 'r'],
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
];
$process = proc_open($command, $spec, $pipes, '/home/CPANEL_USER/nodeapp');
if (!is_resource($process)) {
http_response_code(500);
exit('Could not start renderer');
}
fclose($pipes[0]);
$out = stream_get_contents($pipes[1]);
$err = stream_get_contents($pipes[2]);
fclose($pipes[1]);
fclose($pipes[2]);
$exitCode = proc_close($process);
if ($exitCode !== 0) {
error_log('Puppeteer failed: ' . $err);
http_response_code(502);
exit('Renderer failed');
}
header('Content-Type: application/json');
echo $out;
Replace the Node path and account name with values from your server. Never concatenate untrusted input into a shell command. In a real application, add an application-level deadline, logging with secrets removed, output-size limits, and authentication around any rendering endpoint.
Test through the same execution path
- As the cPanel account, run the Node script over SSH with a known URL.
- Confirm the browser starts, navigation completes, and JSON appears on stdout.
- Invoke the PHP endpoint through PHP-FPM, not only from SSH.
- Compare the web process’s PATH, working directory, environment, permissions, cache directory, memory, and time limits with the SSH session.
- Check both application logs and the captured stderr when a job fails.
A successful SSH test does not prove that PHP-FPM can see the same executable, browser cache, files, or environment.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Chrome dependencies and sandboxing
On Linux, Chrome may fail before your script reaches page.goto(). Puppeteer’s troubleshooting guidance recommends running ldd against the Chrome executable to identify missing shared libraries. The exact packages depend on the distribution. Ask the VPS administrator to install matching packages rather than copying libraries from another system.
Keep the Chrome sandbox enabled wherever the host permits it. Puppeteer strongly discourages --no-sandbox; disabling it is not a routine repair. A “No usable sandbox” message should trigger an investigation of kernel, container, permissions, and provider security policy.
Common failures and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
Could not find Chrome |
Install script was blocked, or runtime uses another user/cache. | Run npx puppeteer browsers install in the project as the intended account; align cache configuration and permissions. |
error while loading shared libraries |
Missing Linux dependency. | Use ldd on Chrome and ask the administrator to install distribution-matched packages. |
| Works over SSH, fails in PHP | Different user, PATH, cwd, environment, permissions, cache, or limits. | Log those values from PHP and use absolute paths; test under PHP-FPM. |
No usable sandbox |
Host security or sandbox policy. | Escalate to the provider and preserve sandboxing; do not reflexively add --no-sandbox. |
| Node application option missing in cPanel | Passenger/Application Manager or CloudLinux Node.js Selector is not installed or enabled. | Ask the provider which feature is available and whether the OS meets its prerequisites. |
| Request hangs or times out | Browser startup/navigation exceeds web-request limits. | Bound navigation, inspect provider limits, and move long jobs to a queue or worker. |
Operational considerations
Reliability
Set navigation and overall job deadlines, close every browser in a finally path, and limit concurrency so several Chrome processes cannot exhaust memory. Reuse a persistent service only with supervision and health checks; otherwise a crashed browser can strand requests.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Security
Validate URLs, restrict private-network access, avoid passing secrets in command-line arguments when possible, and keep stderr out of end-user responses. Store cookies and authorization headers only when the job explicitly requires them.
Updates and disk
Lock npm dependencies, monitor the browser cache, and budget disk for the Puppeteer-managed browser (approximately 282 MB for the documented Linux Chrome for Testing download) plus temporary profiles and screenshots.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
If your goal is simply to obtain dependable website screenshots, ScreenshotNeo provides a hosted API and MCP server instead of requiring Node, Chrome, and cPanel system packages. A single GET request returns PNG, JPEG, WebP, or PDF. It accepts cookie/consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status.
Free tools Windows power users keep installed
One-click scans. No signup required.
Example cURL (see the ScreenshotNeo documentation):
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Its 63 options include full-page and selector captures, device presets, retina scale, dark mode, PDF controls, custom CSS/JavaScript, clicks, waits, blocking rules, headers, cookies, user agents, timezone, geolocation, transparent backgrounds, resizing, chosen-TTL caching, signed links, asynchronous webhooks, bulk capture of up to 100 URLs per call, usage reporting, and an OpenAPI specification. An MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients. Every plan includes every feature: 1,000 shots per month are free with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
FAQ
Frequently Asked Questions
Can PHP use Puppeteer without Node.js?
No. Puppeteer’s API is JavaScript-based; PHP must delegate to a Node.js process, a Node service, or another browser-automation service.
Should I install puppeteer or puppeteer-core?
Use puppeteer when you want the package to download a compatible browser. Use puppeteer-core when Chrome is managed separately or reached remotely.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesCan I run the browser as root on cPanel?
Do not perform cPanel Node setup as root. Run the application as the account user and ask the provider to resolve system-level dependency or sandbox requirements.
How do I handle many screenshots?
Use a queue or persistent Node worker, cap concurrency, and return a job identifier instead of keeping a browser request open.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

