2010-12-27 14 views
6

Właśnie pobrałem oprogramowanie MediaWiki na mój serwer do instalacji. Po jego dekompresji zauważyłem, że pliki PHP nie były wykonywalne.Wykonywanie wszystkich plików PHP (rekursywnie)

Uruchomiłem chmod +x *.php* (istnieją również pliki .php5), ale nie działało to w podkatalogach.

Jak mogę dodać flagę wykonywalną do wszystkich skryptów PHP w folderze MediaWiki, rekurencyjnie skanując podfoldery?

Z góry dziękuję.

+2

Nie sądzę, aby wszystkie pliki były wykonywalne. Zwykłe php zawierają skrypty nie wymagające flagi. Zalecane jest tylko dla skryptów poleceń. Dlatego używaj kilku 'chmod + x */*. Php' oraz' chmod + x */*/*. Php' tylko w odpowiednim folderze narzędzi. – mario

+0

@mario, jeśli dobrze pamiętam, to możliwe (choć prawdopodobnie nieczęsto) ustawienie serwera, które używa "X Bit Hack". –

+0

Powinieneś zawsze kwalifikować swoje polecenia chmod. 'chmod a + x * .php *' ustawi bit execute dla użytkownika, grupy i świata. Jest to domyślnie to, co robisz, ale i jaśniej. Konieczne może być tylko ustawienie pliku wykonywalnego dla użytkownika i grupy ('chmod ug + x') w zależności od sytuacji, a jeśli to zadziała, należy to zrobić w ten sposób. – Sorpigal

Odpowiedz

13

Użyj bash w katalogu MediaWiki

find . -iname "*.php" | xargs chmod +x 
+7

Aby upewnić się, że działa dla nazw plików ze spacjami, użyj : 'znaleźć. -iname '* .php' -print0 | xargs -0 chmod + x' –

+0

Dobrze. Nazwanie twoich plików białymi znakami jest złe;) Miałem nadzieję, że MediaWiki jest dobrym oprogramowaniem. – shfx

+0

W rzeczywistości, komentarz Roberta nie ma zastosowania do MediaWiki, ale dobrze jest pamiętać o ogólnym użyciu. –

2

to nie działa w podkatalogów, ponieważ *.php* nie dało żadnych katalogów, a więc nie obejmuje go.

Dlatego należy użyć czegoś w rodzaju find ./ -iname "*.php*" -exec chmod 755 {} \; z odpowiednimi bitami do ustawienia.

+0

Ponieważ chmod może działać na wielu plikach naraz i ponieważ ta operacja nie zakończy się niepowodzeniem, gdy robisz to równolegle, powinieneś używać '+ 'zamiast' \; 'zamyka twój' -exec'. – Sorpigal

+0

Uważano, że "* .php *" pasuje do .php i .php5, a nie do podkatalogów;) –

+0

Nie używaj '+', gdy nie masz pojęcia o ilości pozycji na liście wynikowej. Spowoduje to wprowadzenie Bohrbug do twojego skryptu. Jeśli lista jest wystarczająco duża, przekroczysz maksymalną długość wykonywalnego wiersza poleceń (OK, wiem, że jest większy niż 2 MB, ale nadal jest niebezpieczny) – karatedog

Powiązane problemy