
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
ページを追加してから検査結果(これは実際のWebサーバーの結果です。)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
に1つがありますが、/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/
次のコンテンツで1つを作成します。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
てWebページを再ロードします。時間は引き続き表示されますが、テキストブロックはphpinfo()
失われるはずです。
rh-php70-php
これは、、、およびrh-php71-php
パッケージでも機能します。これに応じてパスを調整します。rh-php72-php
rh-php73-php
/etc/opt/rh/rh-php##