-
Notifications
You must be signed in to change notification settings - Fork 7.8k
/
Copy pathgh7875.phpt
50 lines (48 loc) · 1.33 KB
/
gh7875.phpt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
--TEST--
GH-7875 (mails are sent even if failure to log throws exception)
--SKIPIF--
<?php
$filename = __DIR__ . "/gh7875.mail.log";
touch($filename);
chmod($filename, 0444);
clearstatcache();
$is_writable = is_writable($filename);
chmod($filename, 0644);
unlink($filename);
if ($is_writable) die("skip cannot make file read-only");
if (PHP_OS_FAMILY !== "Windows") {
if (!extension_loaded('posix')) die('skip POSIX extension not loaded');
if (posix_geteuid() == 0) die('skip Cannot run test as root.');
}
?>
--INI--
sendmail_path={MAIL:{PWD}/gh7875.mail.out}
mail.log={PWD}/gh7875.mail.log
--FILE--
<?php
function exception_error_handler($severity, $message, $file, $line) {
if (!(error_reporting() & $severity)) {
return;
}
throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler("exception_error_handler");
touch(__DIR__ . "/gh7875.mail.log");
chmod(__DIR__ . "/gh7875.mail.log", 0444);
try {
mail('recipient@example.com', 'Subject', 'Body', []);
echo 'Not Reached';
} catch (\Exception $e) {
echo $e->getMessage(), PHP_EOL;
var_dump(file_exists(__DIR__ . "/gh7875.mail.out"));
}
?>
--CLEAN--
<?php
@chmod(__DIR__ . "/gh7875.mail.log", 0644);
@unlink(__DIR__ . "/gh7875.mail.log");
@unlink(__DIR__ . "/gh7875.mail.out");
?>
--EXPECTF--
mail(%s): Failed to open stream: Permission denied
bool(false)