我们最近将我们的服务器从 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)
事实证明,这个错误是由我们在 PHP 升级过程中启用的 OPcache 配置引起的。当我通过从 php.ini 中删除此设置来禁用命令行操作时,一切正常。
opcache.enable_cli=1
Run Code Online (Sandbox Code Playgroud)
我能够用 解决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)
| 归档时间: |
|
| 查看次数: |
13531 次 |
| 最近记录: |