Parece que no puedo hacer nada con mi script PHP en mi VPS.
Devuelve "Permiso denegado" cuando intento cargar algo en un directorio.
Sí, he cambiado el permiso al 777 y funciona, pero no me gusta la inseguridad.
Al ejecutar el comando:
ps axu|grep apache|grep -v grep
Vuelve
nobody 7689 0.1 3.8 50604 20036 ? S 21:38 0:00 /usr/local/apache/bin/httpd -k start -DSSL
root 13600 0.0 3.8 50304 20348 ? Ss Jun06 0:46 /usr/local/apache/bin/httpd -k start -DSSL
nobody 15733 0.1 3.8 50700 20156 ? S 21:39 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 15818 0.1 3.8 51492 20180 ? S 21:39 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 23843 0.1 3.7 51336 19592 ? S 21:40 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30335 0.0 3.5 50436 18496 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30406 0.0 3.5 50444 18544 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30407 0.0 3.5 50556 18696 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30472 0.0 3.6 50828 19348 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30474 0.0 3.5 50668 18868 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30476 0.0 3.6 50532 19064 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30501 0.0 3.8 50556 20080 ? S 21:36 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32341 0.0 3.5 50444 18492 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32370 0.0 3.5 50444 18476 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32414 0.1 3.7 51336 19524 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32416 0.1 3.5 50668 18816 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32457 0.1 3.6 50828 19320 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32458 0.1 3.6 50772 19276 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32459 0.0 3.5 50444 18504 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32460 0.2 3.6 50828 19320 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32463 0.0 3.5 50444 18472 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32466 0.0 3.4 50436 17960 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
El propietario del directorio es 'usuario [505]' y el grupo es 'usuario [508]' (como se ve en WinSCP)
¿Qué puedo hacer para cambiar el controlador Apache al propietario y grupo correctos para permitir que funcionen mis scripts PHP?
PD
Mi PHP no está configurado en modo seguro y open_basedir está configurado ensin valor
EDITAR:
Así es como se ve mi httpd.conf (para el dominio asociativo)
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/domain/public_html
ServerAdmin info@domain
## User <theUsername> # Needed for Cpanel::ApacheConf
<IfModule mod_userdir.c>
Userdir disabled
Userdir enabled <userName>
</IfModule>
<IfModule mod_suphp.c>
suPHP_UserGroup <userName> <userName>
</IfModule>
<IfModule !mod_disable_suexec.c>
SuexecUserGroup <userName> <userName>
</IfModule>
CustomLog /usr/local/apache/domlogs/domain.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
CustomLog /usr/local/apache/domlogs/domain.com combined
ScriptAlias /cgi-bin/ /home/domain/public_html/cgi-bin/
#Options -ExecCGI -Includes
#RemoveHandler cgi-script .cgi .pl .plx .ppl .perl
Respuesta1
Necesitará los mismos derechos que el usuario que ejecuta el servidor web. Esto variará según su sistema operativo. Puede ser "apache" o "www-data" o algo completamente distinto.
A menos que estés usandosuEXEC, el servidor web ejecuta el script y, como tal, se ejecuta con los mismos permisos que ese usuario.
Entonces, para solucionar el problema, debe identificar con qué usuario se está ejecutando el proceso de Apache y aplicar los permisos apropiados a los archivos/carpetas que desea que el script pueda modificar.
Puede especificar la cuenta de usuario y grupo bajo la cual se ejecuta Apache en su archivo de configuración usando el
User=[username]
Group=[groupname]
directivas.
Eche un vistazo a su archivo de configuración; nuevamente, el nombre y la ubicación del archivo variarán según el sistema operativo. Proporcionar un poco más de detalles aquí puede ayudar a obtener una respuesta más directa.
editar: para Centos el archivo conf se encuentra en
/etc/httpd/conf/httpd.conf
Respuesta2
¡ACTUALIZAR!Si usted también tiene este problema, intente esto:
En WHM ve a:
Principal >> Configuración del Servicio >> Configuración de Apache >> Configuración de PHP y SuExec
Cambié Manejador PHP 5a: suphp.
Funcionó de maravilla
Respuesta3
cambie en WHM Principal >> Configuración del servicio >> Configuración de Apache >> Configuración de PHP y SuExec php hadler >> fcgi, resolverá el problema.