勉強のためにhttpサーバーを自作しております。
CGIを実装するための前段として、php-cgiをコマンドラインから実行しました。
test.php
php
1<?php 2echo $_SERVER['QUERY_STRING'] . "\n"; 3echo $_GET['name'] . "\n";
というファイルを用意し、Apache + php-fpmの環境で
http://127.0.0.1/test.php?name=ap2c9w
にアクセスすると
name=ap2c9w ap2c9w
と出力されます。
同じことをコマンドラインから実行するため
bash
1export QUERY_STRING=name=ap2c9w 2export REQUEST_METHOD=GET 3php-cgi test.php
としたところ
<b>Security Alert!</b> The PHP CGI cannot be accessed directly. <p>This PHP CGI binary was compiled with force-cgi-redirect enabled. This means that a page will only be served up if the REDIRECT_STATUS CGI variable is set, e.g. via an Apache Action directive.</p> <p>For more information as to <i>why</i> this behaviour exists, see the <a href="http://php.net/security.cgi-bin">manual page for CGI security</a>.</p> <p>For more information about changing this behaviour or re-enabling this webserver, consult the installation file that came with this distribution, or visit <a href="http://php.net/install.windows">the manual page</a>.</p>
と出力されました。
上記のエラーをぐぐったところ、php.iniのcgi.force_redirectを0に設定するとのことでしたので、
ini
1cgi.force_redirect = 0
とし、
bash
1php-cgi test.php
を実行したところ
Status: 404 Not Found Content-type: text/html; charset=UTF-8 No input file specified.
となりました。
なぜ404を返してくるのかがわかりません。
php-cgi test.php
の結果が
name=ap2c9w ap2c9w
となるようにするには、どうしたらよいでしようか。
よろしくお願いいたします。
[環境]
bash
1$ php-cgi -v 2PHP 7.2.24-0ubuntu0.18.04.7 (cgi-fcgi) (built: Oct 7 2020 15:24:25) 3Copyright (c) 1997-2018 The PHP Group 4Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies 5 with Zend OPcache v7.2.24-0ubuntu0.18.04.7, Copyright (c) 1999-2018, by Zend Technologies
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/17 12:30