2015-03-23 2 views
-1

у меня есть это:Как проверить в PHP, если каталог с символическими ссылками существует и если его не сделать его

move_uploaded_file($File['tmp_name']['File'], $FilePath); 

Где

$FilePath is '/data/www/MIMICm/Common/Upload/PPKInside/CustomImage/6/52' 

Где «PPKInside» является символьной ссылки указывающей на '../../MIMI/Common/Data/' где 'Данные' является символическим, указывающим на '/ mnt/nfsnew/DIDIData/PPKInside/Data'
До сих пор я обнаружил, что «/ шоссе/nfsnew /» пуст и «/ DIDIData/PPKInside/Data» пропавших ...
каталогов Что такое лучший способ проверить, если каталоги существуют и создать их, если они не будут? Потому что на данный момент

is_dir('/data/www/MIMICm/Common/Upload/PPKInside'); 

возвращает ложь, и мне нужно использовать is_link(), но после первой ссылки («PPKInside») я не могу проверить, если его подкаталоги существует и создать их, если это необходимо. ..

ответ

1

realpath расширит любые символические ссылки в данном пути и сказать, существует ли конечный абсолютный файл (каталог):

Realpath() возвращает FALSE при неудаче, например, если файл не существует.

Если он не существует, вы можете создать полный путь к каталогу, в один присест, добавив недостающие подкаталоги по пути, с помощью mkdir с набором $recursive флага.

$FilePath = '/data/www/MIMICm/Common/Upload/PPKInside/CustomImage/6/52'; 

if (!realpath($FilePath)) { 
    mkdir($FilePath, 0777, true); 
} 

Обратите внимание, что этот пример создает все каталоги с чтения/записи/выполнения для всех . Вы можете захотеть изменить 0777, чтобы лучше соответствовать вашей конкретной настройке.

+0

BUT var_dump (realpath ('/ data/www/MIMICm/Common/Upload/PPKInside')); возвращает false AND 'ls -la/data/www/MIMICm/Common/Upload/PPKInside' в оболочке возвращает связанный путь .... так что по какой-то причине realpath() не работает ... – T1000

+0

Вы (ваш веб-сервер пользователь) имеют исполняемые разрешения для всех каталогов в иерархии? – mhall

+0

Не знаю - как проверить? – T1000

Смежные вопросы