2

最近サーバーを PHP 5.4.15 から 5.5.1 にアップグレードしたところ、ログにこのエラーが記録されるようになりました

致命的なエラー ロック ファイルを作成できません: ファイル記述子が正しくありません

バックグラウンドで S3 にファイルをアップロードする別の小さな PHP スクリプトを開くこのビット コードまで追跡しました。

// 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');
4

4 に答える 4

5

このエラーは、PHP アップグレード プロセス中に有効化された OPcache の構成が原因であることが判明しました。php.ini からこの設定を削除してコマンド ライン操作を無効にすると、すべて正常に動作します。

opcache.enable_cli=1
于 2013-07-30T17:49:12.430 に答える
0

Windows セキュリティ → ウイルスと脅威の防止 → ランサムウェア プロテクション でフォルダー アクセスの制御設定をオンにしBad file descriptorていたため、Windows で php-cliを取得しました。

コマンドラインからcomposerを実行しようとしたところ、初期化できず、エラーが発生しました-

[ErrorException]
  file_put_contents(): Write of 111 bytes failed with errno=9 Bad file descriptor

驚いたことに、Windows セキュリティのブロックされたアプリの通知はまったく表示されませんでした。しかし、制御されたフォルダーアクセスを介してアプリを許可する許可されたアプリを追加し、実行可能ファイルを選択するとphp.exe、composer が動作し始めました。

于 2021-07-29T02:17:56.867 に答える