Скрипт очистки с putFileAs работает в Windows, но не в Ubuntu, с общим ресурсом Windows

Используя Laravel 5.5, у меня в контроллере есть способ получить файлы из 1 папки, переименовать их, сохранить в приложении и сделать их общедоступными.

Метод:

public function cleanup_files()
{
ini_set('max_execution_time', 3000);
ini_set('memory_limit','16M');

$i = 0;

$files = Storage::disk('partE')->files('sb');

foreach ($files as $file) {

// strip the file name to about 20 characters and
// then remove anything but numbers
// since some of the names contain dates at the end.
$digits =  preg_replace('/\D/', '', substr($file, 0, 20));

// The remaining number contains 4 digits for the year
// and 1 to 4 digits for the number
$year = substr($digits, 0, 4);
$number = substr($digits, 4);

// Now set the new filename
$filename = 'SB' . $year . '-NO' . $number . '.pdf';

if (! Storage::disk('public')->exists('sb/' . $filename)) {
$newfile = new File(env('BULK_FILES_DIR') . $file);

Storage::disk('public')->putFileAs('sb', $newfile, $filename);

echo "New file added: " . $filename . '<br>';

$i++;
} else {

echo $filename . " already exists in forlder.<br>";
}
}

echo "<br><br>" . $i . " files added...";
}

в моем файле .env на Windows у меня есть BULK_FILES_DIR="D:/Projects/SBs/",
На Ubuntu: BULK_FILES_DIR="/home/user/bibvault/"

в filesystems.php:

'disks' => [

'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],

'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],

'partE' => [
'driver' => 'local',
'root'   => env('BULK_FILES_DIR'),
]

],

Это хорошо работает в Windows. Затем я переношу его на свою производственную машину, которая является Ubuntu 16.04 …

Я создал общий ресурс DFS для Windows, добавил специального пользователя и подключил этот общий ресурс:
sudo mount -v -t cifs //doman.org/bibvault /home/user/bibvault -o uid=www-data,gid=www-data,credentials=/home/user/.cifscreds,iocharset=utf8,file_mode=0777,dir_mode=0777,context="system_u:object_r:httpd_sys_content_t:s0"

Монтирование прошло успешно, я вижу файлы в Ubuntu. Но когда я запускаю свой метод, я получаю
fopen(/home/user/bibvault/sb/2004 no 87.pdf): failed to open stream: Permission denied

К сожалению, показывает мне строку 162 из /vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php, которая находится в определении putFileAs метод.

Я попытался использовать свой собственный uid, я дал подключающемуся пользователю Windows запись, а затем полный доступ к общей папке Windows. Ничто не может изменить эту ошибку.

Я не вижу этого, поэтому я надеюсь, что кто-нибудь может указать мне, где это может быть неправильно. Может быть, настройки разрешений на общий ресурс Windows. Может быть, на самой горе … Понятия не имею на данный момент ..

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector