Revert "Remove Windows syslog script and syslog.reg"

This reverts commit cc44bad1f6, since its
assumptions were not correct.  Actually, the classic event logging is
still used by PHP, because Windows 7 is still to be supported for a
while.  Without the respective registry entries, the event log entries
show an error message regarding missing ID descriptions.

Thanks to ab@php.net for hinting at this!

Obviously, the part depending on ext/win32std has still to be
overhauled, and further improvements are conceivable; we will address
this in due course.
This commit is contained in:
Christoph M. Becker 2019-07-17 19:25:36 +02:00
parent 56a2ea7aa2
commit 6f617b7759
3 changed files with 52 additions and 0 deletions

View File

@ -261,3 +261,6 @@ really-install:
@type nul > $(BUILD_DIR)\extension_dlls.txt @type nul > $(BUILD_DIR)\extension_dlls.txt
@if exist $(BUILD_DIR)\php_*.dll copy $(BUILD_DIR)\php_*.dll $(PHP_PREFIX)\ext /y >nul & dir /b $(BUILD_DIR)\php_*.dll > $(BUILD_DIR)\extension_dlls.txt @if exist $(BUILD_DIR)\php_*.dll copy $(BUILD_DIR)\php_*.dll $(PHP_PREFIX)\ext /y >nul & dir /b $(BUILD_DIR)\php_*.dll > $(BUILD_DIR)\extension_dlls.txt
@xcopy $(BUILD_DIR)\*.dll /exclude:$(BUILD_DIR)\extension_dlls.txt $(PHP_PREFIX) /y >nul @xcopy $(BUILD_DIR)\*.dll /exclude:$(BUILD_DIR)\extension_dlls.txt $(PHP_PREFIX) /y >nul
@echo Registering event source with syslog (requires admin rights)
@echo It's okay for this step to fail:
-$(PHP_PREFIX)\php.exe -n -dextension_dir=$(PHP_PREFIX) win32/build/registersyslog.php $(PHP_PREFIX)\$(PHPDLL)

44
win32/build/registersyslog.php Executable file
View File

@ -0,0 +1,44 @@
<?php
/* This script sets up an event source for use by the php syslog() function. */
if (!extension_loaded("win32std")) {
@dl("php_win32std.dll");
}
$PATH = "SYSTEM\\CurrentControlSet\\Services\\Eventlog\\Application\\PHP-" . phpversion();
$dll = $argv[1];
if (extension_loaded("win32std")) {
$key = @reg_create_key(HKEY_LOCAL_MACHINE, $PATH, KEY_ALL_ACCESS);
if (!$key)
$key = reg_open_key(HKEY_LOCAL_MACHINE, $PATH, KEY_ALL_ACCESS);
if ($key) {
reg_set_value($key, "TypesSupported", REG_DWORD, 7) or die("Types");
reg_set_value($key, "EventMessageFile", REG_SZ, $dll) or die("EventMessageFile");
syslog(LOG_NOTICE, "Registered PHP Event source");
} else {
echo "Could not register event source\n";
}
}
/* let's also generate/update the bundled .reg file */
$dll = addslashes($dll);
file_put_contents("win32/syslog.reg", <<<REG
REGEDIT4
[HKEY_LOCAL_MACHINE\\$PATH]
"TypesSupported"=dword:00000007
"EventMessageFile"="$dll"
REG
);
?>

5
win32/syslog.reg Normal file
View File

@ -0,0 +1,5 @@
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\PHP-7.3.0-dev]
"TypesSupported"=dword:00000007
"EventMessageFile"="g:\\test\\srctrunkinstall\\php7ts.dll"