본문 바로가기
인터넷/모바일

NGINX + PHP + centOS 7 사용 시에 ‘No input file specified.’ 해결방법

by blade. 2018. 12. 3.


############

# NGINX + PHP + centOS 7 사용 시에 ‘No input file specified.’ 해결방법

# *** 이것저것 해봤지만 결국 실패했음. 나중을 위해서 기록을 남겨둠.

############


20181130 못찾음. 

접속이 안 되는 이유는 Selinux에서 제공하는 보안패키지 때문. 

아래와 같이 입력한 후에 php 웹 페이지가 정상적으로 붙는지 확인한다.


setenforce 0 # 


만약 0으로 놓고 정상이며, 1로 놓고 웹 브라우저로 접속했을 때에 'No input file specified.' 에러 메시지가 떨어진다면, 보안 패키지 문제가 맞음. 인터넷을 뒤져보면, 특정 부분만 열어주는 옵션이 있긴하던데, 


원인을 잘 설명해놓은 싸이트.

https://www.lesstif.com/pages/viewpage.action?pageId=14090779


원인 

SELinux (centos 포함) 는 httpd 가 mysql 등의 DBMS 에 연결 불가.

wordpress 나 기타 php 로 개발시 일반적인 3-Tier 구조로 가지 않고 Apache httpd 에서 바로 DBMS 로 가는 구조로 개발.

SELinux 의 rule 에 의해 DBMS 접근이 거부되나, 이때 에러 메시지는 Browser 상에 나타나지 않고 /var/log/audit/audit.log 에 남음. 즉, 로그가 저기 남는지 모를 경우에 원인을 찾기가 어려워짐..

SElinux 에러 메시지 분석을 위해 audit2why 수행.


# audit2why < /var/log/audit/audit.log |more


type=AVC msg=audit(1543560485.447:283007): avc:  denied  { name_connect } for  pid=11775 comm="nginx" dest=1025 sco

ntext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:unreserved_port_t:s0 tclass=tcp_socket


Was caused by:

Unknown - would be allowed by active policy

Possible mismatch between this policy and the one under which the audit message was generated.


Possible mismatch between current in-memory boolean settings vs. permanent ones.



원인은 OS의 강화된 보안 정책 때문에 그런 것임. 위의 블로그에서 내놓은 해결책을 입력해봤음.


setsebool -P httpd_can_network_connect_db 1

setsebool -P httpd_can_network_connect 1

systemctl restart nginx.service


하지만 내 경우는 저걸로 해결되지않음. 결국 포기… 

setenforce 0 으로 놓고 테스트하고, 테스트 끝난 후에는 setenforce 1 으로 돌려놔야겠음.


끝.