Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2018, 10:31   #1
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию Права доступа и file_exist() в Windows - PHP

Здравствуйте.

Делаю консольное phar-приложение, которое должно выполняться ещё и на Windows.
Столкнулся с такой задачей: не могу проверить на существование файлы и папки, функции тупо возвращают всегда false, т. к. что-то с правами доступа на уровне системы.

Как же другие делают консольные phar-приложения с созданием, проверкой на существование и т. д . файлов и папок в Windows? Нигде в интернете не нашёл ответа.

Требуется совет специалиста.
Пока делаю через одно место и не могу поверить, что нет нормального решения.

Код:
if ( mkdir( "docs" ) ) {
    mkdir( "docs/media" );
    echo "'docs' directory has been made." . PHP_EOL;
} else {
    echo "'docs' directory exist." . PHP_EOL;
}
 
foreach ( DOCS_MD as $file_md ) {
    if ( ! file_get_contents( "docs/" . $file_md ) ) {
        file_put_contents( "docs/" . $file_md, "" );
    }
}
Andrej_K вне форума Ответить с цитированием
Старый 05.08.2018, 09:29   #2
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Неужели никто не может ничего подсказать?
Andrej_K вне форума Ответить с цитированием
Старый 05.08.2018, 11:36   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Для проверки существования файла или директории по указанному пути нужно использовать file_exists – а не вот это вот всё.
Также нужно учитывать особенности файловых систем при формировании пути к файлам и директориям.
Andkorol вне форума Ответить с цитированием
Старый 06.08.2018, 02:31   #4
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Спасибо за ответ. Я прочёл статью, которую вы дали, но всё равно не могу добиться чтобы, file_exist() возвратила true, если файл есть. Вы не могли бы написать пример кода, который проверял бы существование файла вне phar-архива в среде Windows?
Andrej_K вне форума Ответить с цитированием
Старый 06.08.2018, 09:36   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Я не работаю в среде Windows.
Andkorol вне форума Ответить с цитированием
Старый 06.08.2018, 10:41   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а я работаю.

вот пример кода на PHP. у меня отработал.
Код:
<?php
if(file_exists('C:\Windows\DirectX.log'))
  echo 'Есть такой файл';
else
  echo 'нет файла';

?>
и так работает:
Код:
<?php
if(file_exists('C:/Windows/directX.log'))
  echo 'Есть такой файл';
else
  echo 'нет файла';

?>
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.08.2018, 11:07   #7
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Спасибо.
Но дело в том, что мы знаем только имя файла и его относительное расположение к архиву (например, на том же уровне). Какой диск и в какой всё папке мы не знаем. Вот в чём задача.
Andrej_K вне форума Ответить с цитированием
Старый 06.08.2018, 11:10   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Andrej_K Посмотреть сообщение
и его относительное расположение к архиву (например, на том же уровне). Какой диск и в какой всё папке мы не знаем.
ээээ. простите, я не понимаю, что означает эта фраза.

Как можно проверить существование файла, если Вы не знаете, в какой папке он находится?


А что, под Linux можно проверить существование файла, не зная, в какой папке он находится?!! o_O!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.08.2018, 11:11   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Текущая директория это не всегда директория скрипта.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.08.2018, 12:05   #10
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Нет, мы точно знаем, что проверяемый файл в той-же папке, что и архив, но где они именно все вместе в файловой системе мы не знаем. Пользователь может развернуть приложение где угодно и
Код:
file_exist( ../file.php );
не проходит.
Andrej_K вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Права доступа LittleG Общие вопросы Delphi 1 22.09.2016 13:27
Права доступа в бд Игорь2322223 Microsoft Office Access 1 20.02.2016 09:24
права доступа serres Общие вопросы .NET 1 28.02.2010 22:06
Права доступа Olejik Общие вопросы C/C++ 0 02.12.2009 15:38
Права доступа L_M Операционные системы общие вопросы 1 19.07.2009 08:09