Verbind een PHP-app met OnlyOffice-documenten en sla wijzigingen op.

Een aangepaste PHP-applicatie integreert met ONLYOFFICE Docs door een document-URL aan te bieden die Docs kan ophalen, de JavaScript-API van Docs in de browser te laden en een callback te accepteren die het bewerkte bestand opslaat. Zorg ervoor dat JWT-ondertekening op de PHP-server blijft en dat zowel de document-URL als de callback-URL bereikbaar zijn vanaf het netwerk waarop ONLYOFFICE Docs draait.

Veel integratieproblemen ontstaan ​​doordat de adressen die de browser, PHP en de documentenserver zien, door elkaar worden gehaald. Test elke route vanuit het netwerk dat deze gebruikt.

Bereid de PHP-app en de documentenserver voor.

ONLYOFFICE Docs biedt de documenteditor. Uw applicatie blijft de documentbeheerder en opslagservice: deze authenticeert gebruikers, bepaalt welke bestanden ze mogen openen, levert het bronbestand en slaat het resultaat op. Installeer Document Server apart en controleer het /healthcheckeindpunt voordat u de applicatiecode debugt.

Gebruik drie bereikbare IP-adressen in uw configuratie:

  • Docs-URL: het adres dat de browser van de gebruiker gebruikt om de editor en de bijbehorende JavaScript-API te laden.
  • Document-URL: een absoluut adres dat de documentserver kan gebruiken om het bronbestand uit de PHP-opslag te downloaden.
  • Callback-URL: een absoluut adres waarnaar de documentenserver na bewerking een POST-verzoek kan sturen, zodat PHP de wijzigingen kan opslaan.
Een aangepaste PHP-projectbestandspagina met een DOCX-bestand en de daarin ingebedde OnlyOffice-editor.
Illustratief app-scherm: de PHP-applicatie beheert de bestandenlijst, terwijl de ONLYOFFICE-editor binnen de bijbehorende pagina wordt geopend.

Bijvoorbeeld, https://docs.example.comkan de editor bedienen, terwijl https://app.example.com/files/42/downloaden https://app.example.com/onlyoffice/callbacknaar PHP verwijzen. Test de bereikbaarheid van browser naar Docs en van Docs naar PHP. In de implementatie localhostverwijst naar de huidige machine of container, dus is het meestal het verkeerde adres voor communicatie tussen services.

Een documentconfiguratie maken voor een geautoriseerd bestand.

Voor een geauthenticeerd openingsverzoek laadt u de metadata van het bestand en bouwt u de editorconfiguratie op in de PHP-backend. Stel de bestandsextensie, titel, absolute download-URL en een documentsleutel in. Houd deze sleutel stabiel voor gelijktijdige editors van dezelfde versie; wijzig deze wanneer PHP de broncode vervangt door een nieuwe versie.

<?php
$config = [
  'documentType' => 'word',
  'document' => [
    'fileType' => 'docx',
    'key' => $document['revision_key'],
    'title' => $document['name'],
    'url' => 'https://app.example.com/files/42/download',
    'permissions' => ['edit' => true],
  ],
  'editorConfig' => [
    'callbackUrl' => 'https://app.example.com/onlyoffice/callback',
    'user' => ['id' => (string)$user['id'], 'name' => $user['name']],
  ],
];
Een weergave van de PHP config.php-code met de waarden voor document fileType, key, title, URL en editorConfig callbackUrl.
Illustratieve PHP-configuratie: de document-URL en de callback-URL verbinden de opslag met de editor.

Handhaaf de bestandsrechten voordat u de URL genereert. Geef geen opslaggegevens prijs en omzeil geen autorisatie; privé- of lokale links vereisen mogelijk ook een token volgens de regels van ONLYOFFICE.

Raadpleeg de configuratiehandleiding en de installatiegids voor zelfhosting van ONLYOFFICE voor de vereiste velden en het pad naar het API-script.

Laad de editor en onderteken de configuratie.

JWT staat voor JSON Web Token, een ondertekend token waarmee ONLYOFFICE kan controleren of de configuratie tijdens de overdracht niet is gewijzigd. JWT-validatie is standaard ingeschakeld in de huidige implementaties; onderteken de editorconfiguratie met het bijbehorende browsertoken-geheim dat is geconfigureerd in Docs. Als uw configuratie een apart uitgaand token-geheim gebruikt, valideer dan ook de callbacks met dat uitgaande token-geheim. Vanaf Docs 7.2 kunnen Docker-installaties automatisch een geheim genereren, dus stel stabiele geheimen in en bewaar deze voor productie.

De officiële handleiding voor het ondertekenen van ONLYOFFICE-bestanden toont PHP-code met het onderhouden firebase/php-jwtpakket. Installeer het met `npm install onlyoffice` composer require firebase/php-jwten onderteken vervolgens de volledige configuratie in de backend voordat u deze terugstuurt naar de pagina:

use Firebase\JWT\JWT;

$secret = getenv('ONLYOFFICE_JWT_SECRET');
if (!$secret) {
    throw new RuntimeException('ONLYOFFICE JWT secret is not configured');
}
$config['token'] = JWT::encode($config, $secret, 'HS256');
Een PHP-codeweergave (sign.php) leest ONLYOFFICE_JWT_SECRET uit de omgeving en ondertekent de configuratie met HS256.
Illustratieve backend-code: de server ondertekent de editorconfiguratie zonder het JWT-geheim in de browser weer te geven.

Houd het geheim buiten de browsercode en versiebeheer. Laad https://docs.example.com/web-apps/apps/api/documents/api.jsen geef de ondertekende JSON door aan DocsAPI.DocEditor:

<div id="editor"></div>
<script src="https://docs.example.com/web-apps/apps/api/documents/api.js"></script>
<script>
  new DocsAPI.DocEditor("editor", <?= $signedConfigJson ?>);
</script>

Codeer JSON veilig met behulp van json_encodeof haal de ondertekende configuratie op van een same-origin endpoint; voeg geen onbetrouwbare waarden samen in JavaScript. De handleiding voor handtekeningenshardkey beschrijft HMAC-SHA256. Voor load-balanced Docs 8.1 en later kan het API-script de beschreven queryparameter bevatten ; een enkele server heeft deze niet nodig.

Wijzigingen opslaan via een PHP-callback.

Na het bewerken stuurt de documentenserver een POST-verzoek naar de server callbackUrl. Status 2 betekent dat de bewerking is voltooid en het bestand klaar is om op te slaan; status 6 betekent dat het bestand geforceerd is opgeslagen. De callback bevat een tijdelijke download-URL voor het bewerkte bestand. Download het bestand en vervang de opgeslagen versie automatisch, of maak een nieuwe versie aan volgens het revisiebeleid van uw app. De functie wordt {"error":0}pas geretourneerd nadat het schrijven naar de opslag succesvol is verlopen.

<?php
use Firebase\JWT\JWT;
use Firebase\JWT\Key;

$raw = file_get_contents('php://input');
$data = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
$auth = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
$token = preg_replace('/^Bearer\s+/i', '', $auth);
$claims = JWT::decode($token, new Key($outboxSecret, 'HS256'));
$verified = (array)($claims->payload ?? []);

if (($verified['key'] ?? '') !== ($data['key'] ?? '')) {
    http_response_code(401);
    exit;
}
$document = findDocumentByRevisionKey($verified['key']);
if (!$document) {
    http_response_code(404);
    exit;
}
if (in_array((int)$data['status'], [2, 6], true)) {
    downloadAndStoreFromDocs($data['url'], $document);
}
header('Content-Type: application/json');
echo json_encode(['error' => 0]);
Een PHP callback.php code view die bewerkingsstatussen 2 en 6 afhandelt en een JSON-foutwaarde van nul retourneert.
Illustratieve callbacklogica: sla het geretourneerde document op voor ondersteunde opslagstatussen en bevestig de succesvolle verwerking.

Het voorbeeld gaat uit van de standaard uitgaande Authorization: BearerJWT-header en het bijbehorende outbox-geheim. Pas het aan als uw server een andere header of body-token gebruikt. De downloadhelper moet alleen uw Docs-host toestaan, het antwoord controleren en het verwachte bestand veilig vervangen. Vertrouw nooit op een willekeurige URL of een niet-ondertekende documentsleutel.

Na een succesvolle opslag retourneert u JSON met de volgende informatie {"error":0}: Raadpleeg de callback-referentie voor statussen en payloads, en de opslaglevenscyclus voor de timing van de callback.

Controleer de volledige heen- en terugreis.

Open een test-DOCX-bestand als geautoriseerde gebruiker, voer een kleine bewerking uit en sluit de editor. Controleer of de callback-sleutel en -status overeenkomen met het beoogde bestand, verifieer of uw app de nieuwe bytes heeft opgeslagen en open het document vervolgens opnieuw. Als het laden mislukt, controleer dan de API-scriptroute en het configuratietoken; als het opslaan mislukt, controleer dan de bereikbaarheid van de callback, de JWT-validatie, het JSON-antwoord en de PHP-opslaglogboeken.

ONLYOFFICE publiceert een PHP-integratievoorbeeld en een PHP-voorbeeldapplicatie, maar waarschuwt expliciet dat voorbeeldintegraties geen beveiligingen bieden die geschikt zijn voor productieomgevingen, zoals autorisatie van opslag en validatie van opslagverzoeken. Gebruik ze om de API-flow te begrijpen en behoud vervolgens de toegangscontroles en callback-beveiliging van uw eigen applicatie.

Laat een reactie achter

Verbind een PHP-app met OnlyOffice-documenten en sla wijzigingen op.

Verbind een PHP-app met OnlyOffice-documenten en sla wijzigingen op.

Integreer de ONLYOFFICE-editor in uw PHP-applicatie, onderteken de configuratie met JWT en sla bewerkte bestanden op via een beveiligde callback.

Houd de spellingcontrole van ONLYOFFICE ingeschakeld voor de taal die u kiest.

Houd de spellingcontrole van ONLYOFFICE ingeschakeld voor de taal die u kiest.

Stel de taal voor de spellingcontrole in voor het hele document of voor geselecteerde tekst, controleer of de spellingcontrole is ingeschakeld en geef aan wanneer een serverwoordenboek ontbreekt.

Wijzigingen bijhouden wanneer een document opnieuw wordt geopend

Wijzigingen bijhouden wanneer een document opnieuw wordt geopend

Schakel de functie 'Wijzigingen bijhouden' permanent in voor iedereen in één ONLYOFFICE-document, controleer of bewerkingen worden geregistreerd en begrijp de beperkingen van deze instelling.

Traceer de upstream om de Nginx-fout 502 van ONLYOFFICE op te lossen.

Traceer de upstream om de Nginx-fout 502 van ONLYOFFICE op te lossen.

Controleer of Nginx, Docker-netwerken of een interne ONLYOFFICE-service een 502-fout retourneert en verifieer vervolgens de gecorrigeerde upstream-verbinding en de health check.

Traceer de opslagcallback wanneer ONLYOFFICE niet opslaat in Nextcloud

Traceer de opslagcallback wanneer ONLYOFFICE niet opslaat in Nextcloud

Diagnoseer mislukte ONLYOFFICE-opslagen door de Nextcloud-callbackroute, proxy-omleidingen en opslaglogboeken te controleren en verifieer vervolgens of het bewerkte bestand behouden blijft.

Voorkom dat de ONLYOFFICE-documentserver te weinig VPS-geheugen heeft.

Voorkom dat de ONLYOFFICE-documentserver te weinig VPS-geheugen heeft.

Zoek de oorzaak van de geheugenproblemen in ONLYOFFICE, controleer de Docker-limieten, configureer het RAM-geheugen van de VPS correct, voeg op een veilige manier swapgeheugen toe en controleer of documenten correct openen en opslaan.

Een mislukte OnlyOffice PDF-export herleiden naar de bron

Een mislukte OnlyOffice PDF-export herleiden naar de bron

Onderscheid problemen met het downloaden via de browser van conversiefouten aan de serverzijde en gebruik het juiste logboek of de juiste toegangscontrole om uw PDF-export werkend te krijgen.

Los de foutmelding "Token is niet geldig" van ONLYOFFICE in Nextcloud op.

Los de foutmelding "Token is niet geldig" van ONLYOFFICE in Nextcloud op.

Vergelijk het JWT-geheim dat wordt gebruikt door ONLYOFFICE Docs en Nextcloud, pas het veilig toe voor Docker- of Linux-installaties en verifieer de verbinding zonder de authenticatie te verzwakken.

Implementeer ONLYOFFICE Workspace Community op Ubuntu 24.04

Implementeer ONLYOFFICE Workspace Community op Ubuntu 24.04

Installeer ONLYOFFICE Workspace Community op Ubuntu 24.04 met het officiële Docker-script, controleer de serververeisten, sla Mail indien nodig over en verifieer de portal op een veilige manier.

Stel ONLYOFFICE JWT-geheimen in voor zowel de server als de connector.

Stel ONLYOFFICE JWT-geheimen in voor zowel de server als de connector.

Configureer overeenkomende JWT-geheimen voor ONLYOFFICE Docs en de bijbehorende connector, met veilige stappen voor Linux-pakketten, Docker-implementaties en verificatie.