Configuration
The native:install command publishes a configuration file to config/nativephp.php.
This file contains all the configuration options for NativePHP.
Default Configuration File#
Copied!
return [ /** * The version of your app. * It is used to determine if the app needs to be updated. * Increment this value every time you release a new version of your app. */ 'version' => env('NATIVEPHP_APP_VERSION', '1.0.0'), /** * The ID of your application. This should be a unique identifier * usually in the form of a reverse domain name. * For example: com.nativephp.app */ 'app_id' => env('NATIVEPHP_APP_ID', 'com.nativephp.app'), /** * If your application allows deep linking, you can specify the scheme * to use here. This is the scheme that will be used to open your * application from within other applications. * For example: "nativephp" * * This would allow you to open your application using a URL like: * nativephp://some/path */ 'deeplink_scheme' => env('NATIVEPHP_DEEPLINK_SCHEME'), /** * The author of your application. */ 'author' => env('NATIVEPHP_APP_AUTHOR'), /** * The copyright notice for your application. */ 'copyright' => env('NATIVEPHP_APP_COPYRIGHT'), /** * The description of your application. */ 'description' => env('NATIVEPHP_APP_DESCRIPTION', 'An awesome app built with NativePHP'), /** * The Website of your application. */ 'website' => env('NATIVEPHP_APP_WEBSITE', 'https://nativephp.com'), /** * The default service provider for your application. This provider * takes care of bootstrapping your application and configuring * any global hotkeys, menus, windows, etc. */ 'provider' => \App\Providers\NativeAppServiceProvider::class, /** * A list of environment keys that should be removed from the * .env file when the application is bundled for production. * You may use wildcards to match multiple keys. */ 'cleanup_env_keys' => [ 'AWS_*', 'AZURE_*', 'GITHUB_*', 'DO_SPACES_*', '*_SECRET', 'BIFROST_*', 'NATIVEPHP_UPDATER_PATH', 'NATIVEPHP_APPLE_ID', 'NATIVEPHP_APPLE_ID_PASS', 'NATIVEPHP_APPLE_TEAM_ID', 'NATIVEPHP_AZURE_PUBLISHER_NAME', 'NATIVEPHP_AZURE_ENDPOINT', 'NATIVEPHP_AZURE_CERTIFICATE_PROFILE_NAME', 'NATIVEPHP_AZURE_CODE_SIGNING_ACCOUNT_NAME', ], /** * A list of files and folders that should be removed from the * final app before it is bundled for production. * You may use glob / wildcard patterns here. */ 'cleanup_exclude_files' => [ 'build', 'temp', 'content', 'node_modules', '*/tests', ], /** * The NativePHP updater configuration. */ 'updater' => [ /** * Whether or not the updater is enabled. Please note that the * updater will only work when your application is bundled * for production. */ 'enabled' => env('NATIVEPHP_UPDATER_ENABLED', true), /** * The updater provider to use. * Supported: "github", "s3", "spaces" * Note: The "s3" provider is compatible with S3-compatible services like Cloudflare R2. */ 'default' => env('NATIVEPHP_UPDATER_PROVIDER', 'spaces'), 'providers' => [ 'github' => [ 'driver' => 'github', 'repo' => env('GITHUB_REPO'), 'owner' => env('GITHUB_OWNER'), 'token' => env('GITHUB_TOKEN'), 'vPrefixedTagName' => env('GITHUB_V_PREFIXED_TAG_NAME', true), 'private' => env('GITHUB_PRIVATE', false), 'autoupdate_token' => env('GITHUB_AUTOUPDATE_TOKEN'), // Read-only token used by the updater for private repos 'channel' => env('GITHUB_CHANNEL', 'latest'), 'releaseType' => env('GITHUB_RELEASE_TYPE', 'draft'), ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'endpoint' => env('AWS_ENDPOINT'), 'path' => env('NATIVEPHP_UPDATER_PATH', null), /** * Optional public URL for serving updates (e.g., CDN or custom domain). * When set, updates will be downloaded from this URL instead of the S3 endpoint. * Useful for S3 with CloudFront or Cloudflare R2 with public access * Example: 'https://updates.yourdomain.com' */ 'public_url' => env('AWS_PUBLIC_URL'), ], 'spaces' => [ 'driver' => 'spaces', 'key' => env('DO_SPACES_KEY_ID'), 'secret' => env('DO_SPACES_SECRET_ACCESS_KEY'), 'name' => env('DO_SPACES_NAME'), 'region' => env('DO_SPACES_REGION'), 'path' => env('NATIVEPHP_UPDATER_PATH', null), ], ], ], /** * The queue workers that get auto-started on your application start. */ 'queue_workers' => [ 'default' => [ 'queues' => ['default'], 'memory_limit' => 128, 'timeout' => 60, 'sleep' => 3, ], ], /** * Define your own scripts to run before and after the build process. */ 'prebuild' => [ // 'npm run build', ], 'postbuild' => [ // 'rm -rf public/build', ], /** * The NSIS installer configuration for Windows builds. * * @see https://www.electron.build/generated/nsisoptions */ 'nsis' => [ 'delete_app_data_on_uninstall' => env('NATIVEPHP_NSIS_DELETE_APP_DATA', false), ], /** * Custom PHP binary path. */ 'binary_path' => env('NATIVEPHP_PHP_BINARY_PATH', null),];
queue_workers— named queue-worker pools that start automatically alongside your app, each with its own queues, memory limit, timeout, and sleep interval — handy if part of your app's work needs to run on a queue other thandefault.prebuild/postbuild— shell commands run immediately before and after the build step (e.g.npm run buildto compile assets first, or cleanup afterward).nsis— options passed to the NSIS installer electron-builder generates for Windows.binary_path— overrides the PHP binary NativePHP bundles with your own, when set.
Customize php.ini#
When your NativePHP application starts, you may want to customize php.ini directives that will be used for your application.
You may configure these directives via the phpIni() method on your NativeAppServiceProvider.
This method should return an array of php.ini directives to be set.
Copied!
namespace App\Providers; use Native\Desktop\Facades\Window;use Native\Desktop\Contracts\ProvidesPhpIni; class NativeAppServiceProvider implements ProvidesPhpIni{ /** * Executed once the native application has been booted. * Use this method to open windows, register global shortcuts, etc. */ public function boot(): void { Window::open(); } public function phpIni(): array { return [ 'memory_limit' => '512M', 'display_errors' => '1', 'error_reporting' => 'E_ALL', 'max_execution_time' => '0', 'max_input_time' => '0', ]; }}