PHP 错误文件描述符错误

Jar*_*d D 2 php apache

我们最近将我们的服务器从 PHP 5.4.15 升级到 5.5.1,并开始在日志中收到此错误

致命错误无法创建锁定文件:文件描述符错误

我已经将其追踪到这一点,该代码会打开另一个小型 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');
Run Code Online (Sandbox Code Playgroud)

Jar*_*d D 5

事实证明,这个错误是由我们在 PHP 升级过程中启用的 OPcache 配置引起的。当我通过从 php.ini 中删除此设置来禁用命令行操作时,一切正常。

opcache.enable_cli=1
Run Code Online (Sandbox Code Playgroud)


Jer*_*ohn 5

我能够用 解决opcache.enable_cli=1,但对我来说,潜在的问题是/tmpMacOS 中目录的权限错误。

这是我为解决此问题所做的工作:

sudo rm -Rf /tmp
sudo rm -Rf /private/tmp
sudo mkdir /private/tmp
sudo chown root:wheel /private/tmp
sudo chmod 1777 /private/tmp
sudo ln -s /private/tmp /tmp
Run Code Online (Sandbox Code Playgroud)