2010-12-27 37 views
6

Acabo de descargar el software MediaWiki en mi servidor para la instalación. Después de descomprimirlo, noté que los archivos PHP no eran ejecutables.Hacer ejecutables todos los archivos PHP (recursivamente)

me corrieron chmod +x *.php* (también hay archivos .php5) pero no funcionaba en los subdirectorios.

¿Cómo puedo agregar el indicador ejecutable a todos los scripts PHP dentro de la carpeta MediaWiki examinando de forma recursiva las subcarpetas?

Gracias de antemano.

+2

No creo que necesite hacer todos los archivos ejecutables. Ordinarios php include scripts no necesitan el flag. Solo se recomienda para scripts de línea de comandos. Por lo tanto, utilice algunos 'chmod + x */*. Php' y' chmod + x */*/*. Php' solo en la carpeta de herramientas correspondiente. – mario

+0

@mario, si mal no recuerdo, es una configuración de servidor posible (aunque probablemente poco común) que utiliza el "X Bit Hack". –

+0

Siempre debe calificar sus comandos chmod. 'chmod a + x * .php *' configurará el bit de ejecución para usuario, grupo y mundo. Esto es implícitamente lo que estás haciendo de todos modos, pero más claro. Puede que solo necesites configurar el ejecutable para usuario y grupo ('chmod ug + x') dependiendo de tu situación, y si esto funciona, deberías hacerlo de esa manera. – Sorpigal

Respuesta

13

Uso fiesta en el directorio MediaWiki

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

Para asegurarse de que funciona para nombres de archivos con espacios, use : 'encontrar. -iname '* .php' -print0 | xargs -0 chmod + x' –

+0

Derecha. Nombrar tus archivos con caracteres blancos es malo;) Espero que MediaWiki sea un buen software. – shfx

+0

De hecho, el comentario de Robert no se aplica a MediaWiki, pero es algo bueno de recordar para el uso general –

2

No funciona en subdirectorios, porque *.php* no coincide con los directorios y por lo tanto no lo incluye.

Por lo tanto, debe usar algo como find ./ -iname "*.php*" -exec chmod 755 {} \; con los bits respectivos para establecer.

+0

Porque chmod puede operar en múltiples archivos a la vez y porque esta operación no fallará cuando se haga en paralelo, debería usar '+ 'en lugar de' \; 'para cerrar su' -exec'. – Sorpigal

+0

'* .php *' se creía que coincidía con .php y .php5, no con subdirectorios;) –

+0

No use '+' cuando no tenga idea de la cantidad de elementos en la lista resultante. Esto introducirá un Bohrbug en tu script. Si la lista es lo suficientemente grande, excederá la longitud máxima de la línea de comando ejecutable (OK, sé que es más grande que 2 Mbytes, pero aún es inseguro) – karatedog

Cuestiones relacionadas