Synology-Forum.nl
Overige software => Web Station => Topic gestart door: beste-els op 01 december 2022, 12:31:53
-
Ik heb een webserver draaien (Apache 2.4.54-0125) die uitsluitend intern wordt gebruikt, dus niet over het internet. Pas geleden heb ik PHP versie 8.0.23-0102 geinstalleerd en als default gekozen voor mijn hele webserver. Een enkele PHP app draait echter niet goed. Die web app wil ik dus blijven gebruiken met PHP7.4 die nog steeds op de server staat.
Ik heb een .htaccess file gemaakt maar die werkt blijkbaar niet op mijn NAS box. Die .htaccess file werkt wel bij mijn externe hosting provider (Cloud86). Ik denk dus dat mijn .htaccess goed is.
Dit is de inhoud van mijn .htaccess:
# START PHP-VERSIE
AddType application/x-lsphp74 .php
# END PHP-VERSIE
Weet iemand wat ik fout doe? Is er een andere manier om mijn diversie PHP apps met verschillende PHP versies te laten werken?
Alle reacties worden gewaardeerd.
-
Maak voor die specifieke website een virtual host aan en gebruik daarvoor php 7.4.
-
Beste Wyodor, dank voor je reactie. Ik ga ‘t proberen, je hoort.
Intussen blijf ik natuurlijk wel nieuwsgierig waarom ‘t met .htaccess niet lukt.
-
nginx in plaats van apache? Pas dit even aan op je synology en probeer het nog eens. nginx is trouwens wel beter dan apache. Vreet minder snelheid.
https://www.nginx.com/blog/converting-apache-to-nginx-rewrite-rules/
-
Dank voor de tip, ga 't proberen. Echter weet ik dan nog niet de juiste syntax om de PHP versie aan te geven en ik vermoed dat het daaraan ligt. Apache kan (voor zover ik weet) werken met .htaccess in een Synology OS.
-
nginx in plaats van apache?
Helaas, Nginx i.p.v. Apache geeft exact hetzelfde probleem
-
Laat ik even vertellen waarom sommige PHP apps bij mij niet goed draaien en waarom ik dit topic ben gestart. Het gaat om de functie mail().
Een heel simpel stukje code draait al jaren tot tevredenheid en verstuurt mails bij de vleet. Echter met de installatie van PHP8 worden de mails verstuurd zonder body text. De rest zoals from, to en subject worden probleemloos meegestuurd. Hieronder staat het kleine stukje PHP code:
<?php
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: <eenmailadres@eennprovider>" . "\r\n";
$to = "mijnemailadres@mijnprovider";
$subject = "Subject van mijn e-mail";
$message = "Body text van mijn e-mail";
echo mail($to, $subject, $message, $headers);
?>
-
Klopt apache kan werken met htacces. nginx niet. Weet je zeker dat apapche aanstaat? Want standaard is dit nginx.
-
Ja, Apache staat aan, niet Nginx. ik neem aan dat je dat alleen bij Webserver hoeft aan te geven?
-
Maak voor die specifieke website een virtual host aan en gebruik daarvoor php 7.4.
Hi Wyodor, dat met die virtual server werkt als een trein. Misschien is dit zelfs handiger dan de aanleg van een .htaccess file. Voorlopig laat ik mijn hele NAS-box op 8.0.23 staan en creëer een virtual host waar nodig. Ik denk zelfs dat dit voor Synology DE manier is om verschillende PHP versies voor verschillende web sites te defineëren.
Bedankt!
-
Een laatste bericht over mijn initiële probleem met PHP8. Dat spitste zich toe op het sturen van een simpele mail m.b.v. een kleine PHP-script (Zie mijn post van 03 december 2022, 11:38:48). Het werkte wel met PHP7 maar niet met PHP8. Ik ben uiteindelijk aan de slag gegaan met de support van Synology.
Verspreid over enkele weken in december en januari heb ik veel gecorrespondeerd met hen en veel testjes op verzoek gedaan. Zelfs een remote access key gegeven zodat men zelf wat testjes kon doen op mijn NAS-box. Uiteindelijk lukte het iemand van support om te mailen met PHP8. Deze man/vrouw had daartoe zijn/haar eigen hotmail credentials ingevuld in mijn Control Panel -> Notification -> Email. Toen ik daarna weer mijn eigen hotmail credentials had ingevuld werkt het echter weer niet met PHP8, wel steeds met PHP7.
Ik denk dat Synology ook wel in de gaten had dat dit een gebed zonder end zou worden. Men berichtte mij:
"Dear customer, the problem is registered in the knowledge base and developers will need more time to find a solution please be on the lookout for updates when they are published. We suggest you use google SMTP in the DSM user interface and the PHP code as a workaround for now or you can always use PHP7. I thank you for your understanding and for your collaboration in reporting this bug."
Blijkbaar noemen ze het zelf een bug maar ik weet niet hoeveel waarde ik daaraan moet hechten. Voorlopig ga ik verder met PHP7 en wacht op een volgende PHP- danwel DSM-versie.
-
Stop eens met het interne mail commando en installeer PHPMailer
In het begin een beetje uitzoeken hoe het moet maar daarna nooit problemen.
klein voorbeeldje
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/PHPMailer/src/Exception.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/PHPMailer/src/PHPMailer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/PHPMailer/src/SMTP.php';
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->IsHTML();
$mail->Username = SUPPORT_EMAIL; // SMTP account username
$mail->Password = SUPPORT_PW; // SMTP account password
$mail->Host = SUPPORT_MAILHOST;
$mail->Port = SUPPORT_MAILPORT;
$mail->SMTPAuth = true;
$mail->SMTPSecure = SUPPORT_MAILSMTPSECURE;
$mail->SMTPDebug = 0;
$mail->SetFrom(SUPPORT_EMAIL, 'galerij support');
$mail->AddReplyTo(SUPPORT_EMAIL, 'galerij support');
$mail->AddBcc(SUPPORT_EMAIL, 'galerij support');
$mail->AddAddress($email, $email);
$mail->Subject = 'Nieuwe inschrijving voor de galerij';
$gsf = getSubscriptionsFor($email);
$msg = 'Hallo' . PHP_EOL . 'Er werd ingeschreven voor wijzigingen aan de galerijen via e-mailadres ' . $email . ' voor 1 of meerdere galerijen.
Je bent momenteel ingeschreven voor de galerijen<ul style="list-style-type: none;"><li>' . implode('<li> ', $gsf) . '</ul>';
$mail->MsgHTML(nl2br($msg));
if(!$mail->Send()) {
loglog('error.log', 'Mailer Error: ' . $mail->ErrorInfo);
}
?>
-
Beste jr212, dank voor je input, ik ga er mee aan de slag. Je hoort.
-
Beste JR212, het is me gelukt om met PHPMailer e-mails te sturen met het SMTP protocol. Het werkt zelfs met PHP8! Helaas blijft de gewone PHP-mailfunctie No-Go. Dankjewel.
Je ziet hierbij mijn PHP source met (algemene) parameters die andere forum-leden wellicht kunnen gebruiken. Denk aan het juiste padnaam van PHPMailer.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require_once "../../PHPMailer/src/Exception.php";
require_once "../../PHPMailer/src/PHPMailer.php";
require_once "../../PHPMailer/src/SMTP.php";
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->Username = "je_login_emailadres_bij_je_mailprovider";
$mail->Password = "je_wachtwoord_bij_je_mailprovider";
$mail->Host = "smtp-mail.outlook.com";
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->SetFrom ("e-mailadres_van_de_afzender", "naam_van_de_afzender");
$mail->AddReplyTo("e-mailadres_van_de_afzender_om_te_antwoorden","naam_van_de_afzender_om_te_antwoorden");
$mail->AddAddress("e-mailadres_van_de_adressant","naam_van_de_adressant");
$mail->Subject = "Dit is de tekst in het subject veld van de e-mail.";
$mail->Body = "Dit is de tekst in de body van de e-mail.";
if (!$mail->Send()) {echo "Sorry, er ging iets mis!";} else {echo "De e-mail is verzonden.";}
?>
Vriendelijke groet...