SCL을 활성화하고 CentOS 7에 Python 2.7, Apache 2.4 및 PHP 7.1을 설치했습니다. 최신 프로그램을 사용하고 있는 것 같습니다. 그러나 PHP 강화에 문제가 있는 것 같습니다.
먼저 다음 php.ini
을 찾을 수 있습니다.
# find /opt/rh -name php.ini
/opt/rh/rh-php71/register.content/etc/opt/rh/rh-php71/php.ini
다음으로 다음을 추가했습니다 disable_functions
.
# grep disable_functions /opt/rh/rh-php71/register.content/etc/opt/rh/rh-php71/php.ini
disable_functions=apache_note,apache_setenv,chgrp,closelog,debugger_off,debugger
_on,define_sys,define_syslog_variables,diskfreespace,dl,escapeshellarg,escapeshe
llcmd,exec,getmypid,getmyuid,ini_restore,leak,listen,openlog,passthru,pclose,pcn
tl_alarm,pcntl_exec,pcntl_fork,pcntl_getpriority,pcntl_get_last_error,pcntl_setp
riority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,
pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcnt
l_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php
_uname,popen,posix,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_
getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgi
d,posix_getpgrp,posix_getpid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix
_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_se
teuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_tty
name,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,s
hell_exec,show_source,syslog,system,url_exec,_getppid
마지막으로 Apache를 다시 시작할 때 phpinfo.php
페이지를 추가한 다음검사 결과(이것은 실제 웹 서버 결과입니다.) PHP는 비활성화된 기능이 없다고 주장합니다.
잘못된 것을 사용하고 있는 것 같은데 php.ini
사용해야 할 것을 찾을 수 없는 것 같습니다. 파일 시스템에서 찾을 수 없으며 /opt
검색 결과 관련 없는 결과가 반환됩니다.
내 질문은 php.ini
SCL PHP가 언제 발효됩니까?
답변1
소프트웨어 컬렉션은 대부분의 콘텐츠를 아래에 설치 /opt
하지만 구성은 실제로 아래에 있습니다 /etc/opt
. (이 중 어떤 것도 나와도 놀라지 않을 것입니다 /var/opt
.) 당신이 찾은 파일은 실제로 ./etc/opt/…
/opt/rh/rh-php71/register.d
답변2
@ulrich-schwarz가 정답을 제공했다고 생각하지만 나중에 이 질문에 직면하여 즉시 답을 보지 못한 저와 같은 다른 사람들을 위해 그의 답변을 확장했습니다.
소프트웨어 컬렉션이 설치되면 디렉토리 구조 php.ini
에 하나가 있지만 /opt/rh/...
그가 지적한 대로 /etc/opt/rh/
디렉토리에 존재합니다.
제 경우에는 rh-php56-php
패키지에 php.ini가 있다는 것을 알았습니다 /etc/opt/rh/rh-php56/php.ini
. 해당 파일에 추가하기만 하면 disable_functions = "phpinfo"
기능이 비활성화됩니다.
이를 확인하려면 /opt/rh/httpd24/root/var/www/html/
다음 콘텐츠로 하나를 만듭니다.index.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php
echo '<p>Hello World - '.date('F Y h:i:s A').' </p>';
phpinfo();
?>
</body>
</html>
새로 설치하면 현재 날짜/시간과 phpinfo()
텍스트 블록이 포함된 페이지가 생성됩니다.
이제 /etc/opt/rh/rh-php56/php.ini
파일을 편집하고(올바른 버전 번호로 대체) disable_functions
행을 disable_functions = "phpinfo"
.
이제 HTTP 서버를 다시 시작 systemctl restart httpd24-httpd.service
하고 웹 페이지를 다시 로드하십시오. 시간은 계속 표시되지만 텍스트 블록은 phpinfo()
손실되어야 합니다.
rh-php70-php
이는 , rh-php71-php
, rh-php72-php
및 rh-php73-php
패키지 에서도 작동합니다 . /etc/opt/rh/rh-php##
이에 따라 경로를 조정하십시오.