Недавно мы обновили наши серверы с PHP 5.4.15 до 5.5.1 и начали получать эту ошибку в журналах
Неустранимая ошибка Не удалось создать файл блокировки: Плохой дескриптор файла
- Процессы php-cgi не закрываются после завершения выполнения скриптов - PHP5.3.3, Win Server 2003, apache
- Apache mod_rewrite не отображает выражение в параметр
- Как программно построить APR1-MD5 с помощью PHP
- Ультра простой сервер HTTP-сокетов, написанный на PHP, ведет себя неожиданно
- Лучше ли обращаться с дружественными / чистыми / красивыми URL-адресами с помощью mod_rewrite или с языком, подобным PHP?
Я отследил его до этого бита кода, который открывает еще один небольшой скрипт PHP, который загружает файл на S3 в фоновом режиме.
// Grab uploaded file and assign a working name $fileTemp = $_FILES['file']['tmp_name']; $pathToWorkingFile = tempnam($g_TmpDirectory, "TR-"); // Move the file to our working area if (move_uploaded_file($fileTemp, $pathToWorkingFile) === false) throw new Exception("Cannot move file to staging area.", 1011); // Where the file will end up on S3 $s3Bucket = "test.bucket.com"; $uploadDest = "/uploads/image123.jpg"; // Create process to upload file in background popen("/usr/local/bin/php /path/to/uploadScript.php $pathToWorkingFile $s3Bucket $uploadDest &", 'r');
Оказывается, эта ошибка была вызвана нашей конфигурацией OPcache, которая была включена во время процесса обновления PHP. Когда я отключу его для операций с командной строкой, удалив этот параметр из php.ini, все работает отлично.
opcache.enable_cli=1