Download the PHP
package php-opcua/laravel-opcua without Composer
On this page you can find all versions of the php package
php-opcua/laravel-opcua. It is possible to download/install
these versions without Composer. Possible dependencies are resolved
automatically.
Vendor php-opcua Package laravel-opcua Short Description Laravel integration for OPC UA client with optional session manager support License
MIT
FAQ
After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.
Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.
In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories.
In this case some credentials are needed to access such packages.
Please use the auth.json textarea to insert credentials, if a package is coming from a private repository.
You can look here for more information.
Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
To use Composer is sometimes complicated. Especially for beginners.
Composer needs much resources. Sometimes they are not available on a simple webspace.
If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Laravel integration for OPC UA built on opcua-client and opcua-session-manager. Connect your Laravel app to PLCs, SCADA systems, sensors, and IoT devices with a familiar developer experience: a Facade, .env-based configuration, named connections (like config/database.php), and an Artisan command for the optional session manager daemon.
What you get:
Facade — Opcua::read('i=2259') with full IDE autocompletion
Named connections — define multiple OPC UA servers and switch between them, just like database connections
Transparent session management — when the daemon is running, connections persist across HTTP requests; when it's not, direct per-request connections with zero code changes
Laravel-native logging and caching — your log channel and cache store are automatically injected into every OPC UA client
All OPC UA operations — browse, read, write, method calls, subscriptions, events, history, path resolution, type discovery
PSR-14 events — 47 dispatched events covering every OPC UA operation for observability and extensibility
Auto-publish — daemon monitors subscriptions automatically and dispatches PSR-14 events to your Laravel listeners — no manual publish loop
Auto-connect — define subscriptions in config/opcua.php per connection and the daemon sets them up at startup
Trust store — certificate trust management with configurable policies and auto-accept modes
Write auto-detection — omit the type parameter and let the client detect the correct OPC UA type automatically
Note: This package wraps the full opcua-client API with Laravel conventions. For the underlying protocol details, types, and advanced features, see the client documentation.
### Tested against the OPC UA reference implementation
The underlying [opcua-client](https://github.com/php-opcua/opcua-client) is integration-tested against **[UA-.NETStandard](https://github.com/OPCFoundation/UA-.NETStandard)** — the **reference implementation** maintained by the OPC Foundation, the organization that defines the OPC UA specification.
This Laravel package is additionally integration-tested via [uanetstandard-test-suite](https://github.com/php-opcua/uanetstandard-test-suite) in both direct and managed (daemon) modes, ensuring full compatibility across all connection strategies. Like [opcua-client](https://github.com/php-opcua/opcua-client) and [opcua-session-manager](https://github.com/php-opcua/opcua-session-manager), unit tests run cross-OS — **Linux, macOS, and Windows** across PHP 8.2–8.5 × Laravel 11/12/13 — on every push. Integration tests stay on Linux (Docker-hosted OPC UA servers).
### Runs on Linux, macOS, and Windows
The session manager IPC auto-selects the right transport per platform — zero app-side changes.
| Platform | Default transport | Endpoint URI |
|---|---|---|
| Linux / macOS | Unix-domain socket | `unix://` |
| Windows | TCP loopback | `tcp://127.0.0.1:9990` |
`config/opcua.php → session_manager.socket_path` defaults to the platform-appropriate URI. Override by setting `OPCUA_SOCKET_PATH` in `.env` to either a `unix://`, a `tcp://127.0.0.1:` (loopback-only — non-loopback hosts are refused on both client and daemon sides), or a scheme-less path (= `unix://`, backwards-compatible with pre-v4.2.0 configs).
Quick Start
That's it. Facade, .env, connect, read. Everything else is optional.
See It in Action
Browse the address space
Read multiple values with fluent builder
Write to a PLC
Call a method on the server
Subscribe to data changes
Auto-publish — no manual publish loop
With auto_publish enabled, the daemon handles subscriptions automatically. Just register Laravel event listeners:
React to events
47 PSR-14 events are dispatched automatically — connections, reads, writes, alarms, subscriptions, cache, retries. Just register listeners:
See Events documentation for the full reference of all 47 events.
Switch connections
Test without a real server
Features
Feature
What it does
Facade
Opcua::read(), Opcua::browse(), etc. with full PHPDoc for IDE autocompletion
Named Connections
Define multiple servers in config/opcua.php, switch with Opcua::connection('plc-2')
Ad-hoc Connections
Opcua::connectTo('opc.tcp://...') for endpoints not in config
Session Manager
Artisan command php artisan opcua:session for daemon-based session persistence
Transparent Fallback
Daemon available? ManagedClient. Not available? Direct Client. Zero code changes
String NodeIds
'i=2259', 'ns=2;s=MyNode' everywhere a NodeId is accepted
ECC disclaimer: ECC security policies (ECC_nistP256, ECC_nistP384, ECC_brainpoolP256r1, ECC_brainpoolP384r1) are fully implemented and tested against the OPC Foundation's UA-.NETStandard reference stack. However, no commercial OPC UA vendor supports ECC endpoints yet. When using ECC, client certificates are auto-generated if client_certificate/client_key are omitted, and username/password authentication uses the EccEncryptedSecret protocol automatically.
| History Read | Raw, processed, and at-time historical queries |
| Typed Returns | All service responses return public readonly DTOs |
Documentation
Full documentation is available in docs/. Highlights:
Section
Covers
Getting started — Upgrading
Concepts, install, first connection
Configuration — Publishing & overriding
.env, config file, named connections
Using the client — Using builders
Facade, DI, lifecycle
Operations — History
Read/write, browse, subscribe, history
Session manager — Monitoring
Persistent sessions via daemon
Events — Queued listeners
PSR-14 + Laravel listeners
Observability — Telescope & Pulse
Logs, cache, dev tools
Security — Trust store
Security policies, certs, trust
Testing — Integration tests
Unit + integration tests
Integrations — Filament
Laravel ecosystem
Reference — Exceptions
Public API
Recipes — Production deployment
Task-oriented walkthroughs
Testing
146+ unit tests with 99%+ code coverage. Integration tests run against uanetstandard-test-suite — a Docker-based OPC UA environment built on the OPC Foundation's UA-.NETStandard reference implementation — in both direct and managed (daemon) modes.
Daemon-based session persistence across PHP requests. Keeps OPC UA connections alive between short-lived PHP processes via a ReactPHP daemon and Unix sockets. Separate package by design — see ROADMAP.md for rationale.
Docker-based OPC UA test servers (UA-.NETStandard) for integration testing
Community
Have questions, ideas, or want to share what you've built? Join the GitHub Discussions.
Connected a PLC, SCADA system, or OPC UA server? We're building a community-driven list of tested hardware and software. Share your experience in Tested Hardware & Software — even a one-liner like "Siemens S7-1500, works fine" helps other users know what to expect.
Contributing
Contributions welcome — see CONTRIBUTING.md.
AI-Ready
This package ships with machine-readable documentation designed for AI coding assistants (Claude, Cursor, Copilot, ChatGPT, and others). Feed these files to your AI so it knows how to use the library correctly:
File
Purpose
llms.txt
Compact project summary — architecture, Facade, configuration, session manager. Optimized for LLM context windows with minimal token usage.
llms-full.txt
Comprehensive technical reference — every config key, method, DTO, event, trust store, managed client. For deep dives and complex questions.
llms-skills.md
Task-oriented recipes — step-by-step instructions for common tasks (install, read, write, browse, named connections, session manager, security, testing, events). Written so an AI can generate correct, production-ready code from a user's intent.
How to use: copy the files you need into your project's AI configuration directory. The files are located in vendor/php-opcua/laravel-opcua/ after composer install.
Claude Code: reference per-session with --add-file vendor/php-opcua/laravel-opcua/llms-skills.md
Cursor: copy into your project's rules directory — cp vendor/php-opcua/laravel-opcua/llms-skills.md .cursor/rules/laravel-opcua.md
GitHub Copilot: copy or append the content into your project's .github/copilot-instructions.md file (create the file and directory if they don't exist). Copilot reads this file automatically for project-specific context
Other tools: paste the content into your system prompt, project knowledge base, or context configuration
Versioning
This package follows the same version numbering as php-opcua/opcua-client. Each release of laravel-opcua is aligned with the corresponding release of the client library to ensure full compatibility.
Composer command for our command line client (download client)This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free.Standard composer command
The package php-opcua/laravel-opcua contains the following files
Loading the files please wait ...
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.