W kilku instalacjach WordPress natknąłem się na Bluehost, gdzie napotkałem błędy w moim motywie WordPress, ponieważ folder przesyłania wp-content/uploads
nie był obecny.
Najwyraźniej instalator WordPress Bluehost cPanel nie tworzy tego folderu, choć HostGator tak.
Więc muszę dodać kod do mojego motywu, który sprawdza folder i tworzy go inaczej.
if (!file_exists('path/to/directory')) { mkdir('path/to/directory', 0777, true); }
Odpowiedzi:
Spróbuj tego, używając mkdir :
Zauważ, że
0777
jest to już domyślny tryb dla katalogów i może nadal być modyfikowany przez bieżący umask.źródło
file_exists
- Sprawdza, czy plik lub katalog istniejeis_file
- Mówi, czy nazwa pliku jest zwykłym plikiemis_dir
- Mówi, czy nazwa pliku to katalogOto brakujący element. Musisz przekazać flagę „rekurencyjną” jako trzeci argument (boolean true) w wywołaniu mkdir w następujący sposób:
źródło
true
Coś bardziej uniwersalnego, ponieważ pojawia się w Google. Chociaż szczegóły są bardziej szczegółowe, tytuł tego pytania jest bardziej uniwersalny.
To pójdzie ścieżką, być może z długim łańcuchem nie utworzonych katalogów, i przejdzie do następnego katalogu, aż dojdzie do istniejącego katalogu. Następnie spróbuje utworzyć następny katalog w tym katalogu i będzie kontynuował, aż utworzą wszystkie katalogi. Zwraca true, jeśli się powiedzie.
Można to poprawić, zapewniając poziom zatrzymania, aby po prostu zawiódł, jeśli wykracza poza folder użytkownika lub coś, i zawiera uprawnienia.
źródło
Co z taką funkcją pomocnika:
Zwróci,
true
jeśli katalog został pomyślnie utworzony lub już istnieje ifalse
jeśli nie można go utworzyć.Lepszym rozwiązaniem jest to (nie powinny dawać żadnych ostrzeżeń):
źródło
@
iis_dir
zastąpisz go odpowiednim sprawdzeniem, moja opinia jest Twoja :) Punkty bonusowe za sprawdzenie, czy katalog nadrzędnyis_writable()
dla wodoszczelnej funkcji pomocnika.Szybszy sposób na utworzenie folderu:
źródło
Rekurencyjnie utwórz ścieżkę do katalogu:
Inspirowany Pythonem
os.makedirs()
źródło
W WordPress istnieje również bardzo przydatna funkcja wp_mkdir_p która rekurencyjnie tworzy strukturę katalogów.
Źródło w celach informacyjnych: -
źródło
Potrzebuję tego samego dla strony logowania. Musiałem stworzyć katalog z dwiema zmiennymi. Katalog $ to główny folder, w którym chciałem utworzyć inny podfolder z numerem licencji użytkownika.
źródło
To jest najbardziej aktualne rozwiązanie bez tłumienia błędów:
źródło
Jeśli chcesz uniknąć problemu
file_exists
VSis_dir
, radzę zajrzeć tutajPróbowałem tego i tworzy katalog tylko wtedy, gdy katalog nie istnieje . Nie obchodzi go to, że istnieje plik o tej nazwie.
źródło
źródło
Możesz spróbować również:
źródło
Aby utworzyć folder, jeśli jeszcze nie istnieje
Biorąc pod uwagę środowisko pytania.
I cytowanie z: http://php.net/manual/en/function.mkdir.php
Instrukcja mówi, że jedynym wymaganym parametrem jest
$pathname
!więc możemy po prostu kodować:
Wyjaśnienie:
Nie musimy przekazywać żadnego parametru ani sprawdzać, czy folder istnieje, ani nawet parametru trybu przejścia, chyba że jest to konieczne; z następujących powodów:
mode
jest ignorowany na Windows Hosting z PHP .mkdir
komenda posiada wbudowany w sprawdzający czy folder istnieje; więc musimy sprawdzić zwrot tylko True | False; i to nie jest błąd, to tylko ostrzeżenie, a Ostrzeżenie jest domyślnie wyłączone na serwerach hostingowych.To tylko kolejny sposób, aby spojrzeć na pytanie i nie domagać się lepszego lub najbardziej optymalnego rozwiązania.
Testowane na PHP7, Production Server, Linux
źródło
źródło
Powinniśmy zawsze modulować nasz kod, a ja napisałem to samo sprawdź go poniżej ... Najpierw sprawdzamy katalog, jeśli go nie ma, tworzymy katalog.
źródło
Najpierw musisz sprawdzić, czy katalog istnieje
file_exists('path_to_directory')
Następnie użyj,
mkdir(path_to_directory)
aby utworzyć katalogWięcej informacji o mkdir () tutaj
Pełny kod tutaj:
źródło
Proszę bardzo.
źródło
Przyjęta odpowiedź działa, ale ze względu na uprawnienia nie jest to właściwe rozwiązanie. Uprawnienia 0777 umożliwiają każdemu dostęp do / odczyt / zapis katalogu. Nie tego chcemy dla katalogu wysyłania na serwerze internetowym. Oto sugerowane prawidłowe i kompletne rozwiązanie.
0644 są odpowiednimi uprawnieniami do katalogu uploads, ponieważ zazwyczaj nie chcemy, aby przesyłano go na serwer, aby tam był wykonywany.
true to trzeci parametr służący do ustawiania właściwości rekurencyjnej na true lub false. Pozwala na tworzenie zagnieżdżonych katalogów określonych w nazwie ścieżki.
źródło