Tauri System administrator documentation Documentation administrateur système

PHP, WordPress & applications

Tauri runs PHP with Zend PHP 8.3 — the reference PHP engine — with its OPcache, adapted to Tauri's system layer. Data lives in Tauri's built-in SQL database: there is no MySQL server. Applications reach it through PDO / SQLite3 (SQLite dialect), and WordPress through a database adapter shipped with the system. On that basis, real, unmodified applications run: WordPress, Drupal, Symfony, Laravel, MediaWiki, Nextcloud, phpBB, Kanboard and others. Tauri exécute le PHP avec Zend PHP 8.3 — le moteur PHP de référence — et son OPcache, adaptés à la couche système de Tauri. Les données vivent dans la base SQL intégrée de Tauri : il n'y a pas de serveur MySQL. Les applications y accèdent par PDO / SQLite3 (dialecte SQLite), et WordPress par un adaptateur de base livré avec le système. Sur ce socle tournent de vraies applications, non modifiées : WordPress, Drupal, Symfony, Laravel, MediaWiki, Nextcloud, phpBB, Kanboard et d'autres.

Same language, different systemMême langage, système différent

The language is exactly that of PHP 8.3. What differs is around it: the set of extensions (section 2), the database (section 4) and Tauri's paths (c:/…, @nc:/…). Test a site on Tauri before opening it to the public, and report what fails. Le langage est exactement celui de PHP 8.3. Ce qui diffère est autour : le jeu d'extensions (section 2), la base de données (section 4) et les chemins de Tauri (c:/…, @nc:/…). Testez un site sur Tauri avant de l'ouvrir au public, et signalez ce qui échoue.

1. Applications that runApplications qui tournent

ApplicationNotesRemarques
WordPress 7.0Authentic core, shared read-only on @wp:: each site keeps only its wp-config.php, wp-content/ (themes, plugins, media) and its tables. Created per hosting account with compteadm wordpress, or automatically when a domain is attached from the self-service pages. Plugins that go through $wpdb work; a plugin that opens its own MySQL connection does not.Cœur authentique, partagé en lecture seule sur @wp: : chaque site ne garde que son wp-config.php, son wp-content/ (thèmes, extensions, médias) et ses tables. Créé par compte d'hébergement avec compteadm wordpress, ou automatiquement au rattachement d'un domaine depuis les pages de libre-service. Les extensions qui passent par $wpdb fonctionnent ; une extension qui ouvre sa propre connexion MySQL, non.
Drupal 11Core shared read-only on @dp: (compteadm drupal); --copie gives the site a private copy.Cœur partagé en lecture seule sur @dp: (compteadm drupal) ; --copie donne au site une copie privée.
Symfony 7, Laravel 12Framework packages shared read-only on @fw:: an application keeps its own code and whatever is not shared. To put your own project online: Laravel & Symfony tutorial.Paquets des frameworks partagés en lecture seule sur @fw: : une application ne garde que son code et ce qui n'est pas partagé. Pour mettre en ligne votre propre projet : tutoriel Laravel & Symfony.
MediaWiki, Nextcloud, phpBB, Kanboard, Grav, FreshRSS, DokuWiki, PluXml, Bludit, WonderCMSInstalled and used through their own installers and pages.Installées et utilisées par leurs propres installeurs et pages.
AdminerBrowsing, queries and inserts work; editing an existing row does not (it relies on SQLite's rowid).Consultation, requêtes et insertions fonctionnent ; la modification d'une ligne existante non (elle repose sur le rowid de SQLite).

2. The PHP engineLe moteur PHP

php -v shows PHP 8.3.26 with Zend OPcache (PHP_VERSION_ID 80326). Websites are served by a resident PHP daemon that keeps the shared application cores (WordPress, Drupal, frameworks) precompiled in OPcache; each request runs in a fresh process forked from it, under the identity of the site's account. php -v affiche PHP 8.3.26 avec Zend OPcache (PHP_VERSION_ID 80326). Les sites sont servis par un démon PHP résident qui garde les cœurs d'applications partagés (WordPress, Drupal, frameworks) précompilés dans OPcache ; chaque requête s'exécute dans un processus neuf, issu de lui, sous l'identité du compte du site.

Extensions providedExtensions fourniesScopePortée
Core, date, json, pcre, SPL, hash, random, Reflection, session, ctype, filter, mbstring, tokenizer, iconv, bcmath, exif, posixStandard behaviour.Comportement standard.
PDO, pdo_sqlite, sqlite3SQLite dialect over Tauri's database (section 4). No other PDO driver.Dialecte SQLite sur la base de Tauri (section 4). Aucun autre pilote PDO.
dom, SimpleXML, xml, xmlreader, xmlwriter, libxmlXML documents and parsing (libxml2).Documents et analyse XML (libxml2).
curlReal HTTP/HTTPS transfers; the server certificate is validated. curl_multi_* runs its transfers one after another.Vrais transferts HTTP/HTTPS ; le certificat du serveur est validé. curl_multi_* exécute ses transferts l'un après l'autre.
opensslSymmetric encryption (AES), digests, PBKDF2, random bytes, RSA and EC key pairs (create, export, sign, verify, encrypt). No X.509 certificates, CSR or PKCS#7.Chiffrement symétrique (AES), empreintes, PBKDF2, aléa, paires de clés RSA et EC (création, export, signature, vérification, chiffrement). Ni certificats X.509, ni CSR, ni PKCS#7.
zlib, zipgz* functions and ZipArchive.Fonctions gz* et ZipArchive.
gdPHP's own GD: PNG, JPEG, GIF, BMP, WBMP, XBM, TGA, TrueType text — enough for WordPress thumbnails. No WebP or AVIF.Le GD de PHP : PNG, JPEG, GIF, BMP, WBMP, XBM, TGA, texte TrueType — de quoi produire les vignettes WordPress. Ni WebP ni AVIF.
fileinfoMIME type detection of files and strings.Détection du type MIME des fichiers et des chaînes.

Not available: mysqli, pdo_mysql, pdo_pgsql (there is no external database server), sodium, gmp, imagick, and intl (only its Normalizer and grapheme_* functions exist). extension_loaded() reports exactly what is present, so applications take their own fallback (WordPress, for instance, ships its own sodium replacement). Non disponibles : mysqli, pdo_mysql, pdo_pgsql (il n'y a pas de serveur de base externe), sodium, gmp, imagick, et intl (seules ses fonctions Normalizer et grapheme_* existent). extension_loaded() dit exactement ce qui est présent : les applications prennent alors leur propre solution de repli (WordPress, par exemple, embarque son remplaçant de sodium).

3. Running PHPExécuter du PHP

A request for a .php file is executed by the web server with nothing to enable (see Websites). On a hosting account, PHP runs under the account's own identity, confined to its home. From the shell: Une requête vers un fichier .php est exécutée par le serveur web sans rien à activer (voir Sites web). Sur un compte d'hébergement, le PHP tourne sous l'identité du compte, confiné à son répertoire. Depuis le shell :

php script.php [args...]  # run a script (output on the console)# exécuter un script (sortie sur la console)
php -l page.php           # syntax check only# vérifier la syntaxe seulement
LimitLimiteValueValeur
Request body / uploadCorps de requête / téléversement2 MB2 Mo
memory_limit128 MB by default; ini_set() may change it. A process never gets more than 256 MB, and the system always keeps a memory reserve for itself128 Mo par défaut ; ini_set() peut le changer. Un processus n'obtient jamais plus de 256 Mo, et le système garde toujours une réserve de mémoire pour lui-même
max_execution_timeUnlimited by default; set_time_limit() arms it. The web server ends a page after 60 s.Illimité par défaut ; set_time_limit() l'arme. Le serveur web coupe une page au bout de 60 s.
A site can call itselfUn site peut s'appeler lui-même

127.0.0.1, localhost and the server's own address reach its own web servers: the WordPress wp-cron loopback and the Site Health loopback test work. In such a local call, the visitor address (REMOTE_ADDR) is the server's own address, not 127.0.0.1. 127.0.0.1, localhost et l'adresse propre du serveur joignent ses propres serveurs web : la boucle de wp-cron de WordPress et le test de boucle de Santé du site fonctionnent. Dans un tel appel local, l'adresse du visiteur (REMOTE_ADDR) est l'adresse propre du serveur, pas 127.0.0.1.

disk_free_space() and disk_total_space() answer at once with the real figures: the free and total space of the volume, or — for a hosting account, on its own disk — its quota and what remains of it. File and folder names have no length limit; a full path may reach 4,096 characters. disk_free_space() et disk_total_space() répondent aussitôt avec les vrais chiffres : l'espace libre et total du volume, ou — pour un compte d'hébergement, sur son propre disque — son quota et ce qu'il en reste. Les noms de fichiers et de dossiers n'ont pas de limite de longueur ; un chemin complet peut atteindre 4 096 caractères.

4. The databaseLa base de données

There is no MySQL. Tables live in Tauri's integrated SQL engine, where each table is a path of the file system (for example c:/user/alice/data/app.db/users/). With PDO or SQLite3, give the usual SQLite DSN: the path you name becomes the folder that holds the application's tables. Il n'y a pas de MySQL. Les tables vivent dans le moteur SQL intégré de Tauri, où chaque table est un chemin du système de fichiers (par exemple c:/user/alice/data/app.db/users/). Avec PDO ou SQLite3, donnez le DSN SQLite habituel : le chemin indiqué devient le dossier qui contient les tables de l'application.

$db = new PDO('sqlite:c:/user/alice/data/app.db');
$db->exec('CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, texte TEXT)');

From the shell, query and administer the same tables with sql and bddadm: Depuis le shell, interrogez et administrez ces mêmes tables avec sql et bddadm :

sql "SELECT id, texte FROM c:/user/alice/data/app.db/notes/"
bddadm column list c:/user/alice/data/app.db/notes/

NextSuite

Host sites for other people: Hosting. Protect them: Security. Héberger des sites pour d'autres : Hébergement. Les protéger : Sécurité.