Есть ли какой-нибудь URL/поток, который fopen
будет успешно открываться на большинстве установок PHP? /dev/null
недоступен или не открывается в некоторых системах. Что-то вроде php://temp
должно быть довольно надежной ставкой, верно?
Приложение для этого кода, которое гарантирует ресурс файла, вместо смешанного типа файла bool|resource
, который у вас есть с fopen
:
/**
* @return resource
*/
function openFileWithResourceGuarantee() {
$fh = @fopen('/write/protected/location.txt', 'w');
if ( $fh === false ) {
error_log('Could not open /write/protected/location.txt');
$fh = fopen('php://temp');
}
return $fh;
}
В PHP 7 со строгими типами вышеприведенная функция должна гарантировать ресурс и избегать логических значений. Я знаю, что ресурсы не являются официальными типами, но все же хочу быть максимально безопасным для типов.
php://temp
должно работать нормально, но может быть не лучшим местом для фактического ведения журнала, поскольку оно предназначено для временного хранения. На самом деле он вообще не затронет файловую систему, если вы не напишете больше определенного предела памяти (по умолчанию 2 МБ), поэтому он будет потерян, как только скрипт завершит работу.tmpfile
может быть другим вариантом. - person iainn   schedule 31.08.2018sys_get_temp_dir
, который должен работать почти во всех ОС, использующих PHP: secure.php.net/manual/en/function.sys-get-temp-dir.php - person Loek   schedule 31.08.2018Do some error logging here
просто указывает, что я хочу получить какой-то сигнал о том, что открытие файла не удалось. Я отредактирую пример. - person chiborg   schedule 31.08.2018