Просмотр исходного кода

Merge branch 'master' into snyk

El RIDO 5 лет назад
Родитель
Сommit
7311e9ce12
2 измененных файлов с 19 добавлено и 8 удалено
  1. 18 8
      lib/Persistence/AbstractPersistence.php
  2. 1 0
      tst/Data/GoogleCloudStorageTest.php

+ 18 - 8
lib/Persistence/AbstractPersistence.php

@@ -90,12 +90,15 @@ abstract class AbstractPersistence
         }
         }
         $file = self::$_path . DIRECTORY_SEPARATOR . '.htaccess';
         $file = self::$_path . DIRECTORY_SEPARATOR . '.htaccess';
         if (!is_file($file)) {
         if (!is_file($file)) {
-            $writtenBytes = @file_put_contents(
-                $file,
-                'Require all denied' . PHP_EOL,
-                LOCK_EX
-            );
-            if ($writtenBytes === false || $writtenBytes < 19) {
+            $writtenBytes = 0;
+            if ($fileCreated = @touch($file)) {
+                $writtenBytes = @file_put_contents(
+                    $file,
+                    'Require all denied' . PHP_EOL,
+                    LOCK_EX
+                );
+            }
+            if ($fileCreated === false || $writtenBytes === false || $writtenBytes < 19) {
                 throw new Exception('unable to write to file ' . $file, 11);
                 throw new Exception('unable to write to file ' . $file, 11);
             }
             }
         }
         }
@@ -115,8 +118,15 @@ abstract class AbstractPersistence
     {
     {
         self::_initialize();
         self::_initialize();
         $file         = self::$_path . DIRECTORY_SEPARATOR . $filename;
         $file         = self::$_path . DIRECTORY_SEPARATOR . $filename;
-        $writtenBytes = @file_put_contents($file, $data, LOCK_EX);
-        if ($writtenBytes === false || $writtenBytes < strlen($data)) {
+        $fileCreated  = true;
+        $writtenBytes = 0;
+        if (!is_file($file)) {
+            $fileCreated = @touch($file);
+        }
+        if ($fileCreated) {
+            $writtenBytes = @file_put_contents($file, $data, LOCK_EX);
+        }
+        if ($fileCreated === false || $writtenBytes === false || $writtenBytes < strlen($data)) {
             throw new Exception('unable to write to file ' . $file, 13);
             throw new Exception('unable to write to file ' . $file, 13);
         }
         }
         @chmod($file, 0640); // protect file access
         @chmod($file, 0640); // protect file access

+ 1 - 0
tst/Data/GoogleCloudStorageTest.php

@@ -34,6 +34,7 @@ class GoogleCloudStorageTest extends PHPUnit_Framework_TestCase
         // do not report E_NOTICE as fsouza/fake-gcs-server does not return a `generation` value in the response
         // do not report E_NOTICE as fsouza/fake-gcs-server does not return a `generation` value in the response
         // which the Google Cloud Storage PHP library expects.
         // which the Google Cloud Storage PHP library expects.
         error_reporting(E_ERROR | E_WARNING | E_PARSE);
         error_reporting(E_ERROR | E_WARNING | E_PARSE);
+        ini_set('error_log', stream_get_meta_data(tmpfile())['uri']);
         $this->_model = GoogleCloudStorage::getInstance(array(
         $this->_model = GoogleCloudStorage::getInstance(array(
             'bucket' => self::$_bucket->name(),
             'bucket' => self::$_bucket->name(),
             'prefix' => 'pastes',
             'prefix' => 'pastes',