[PHP-users 26782] 外部PHPスクリプト実行でループ
Shigetaka Yachi
syachi @ brownmush.net
2005年 9月 6日 (火) 10:29:44 JST
矢地です。
ブラウザからアクセスされると、PHPで書かれた外部プログラムを
実行する自作のプログラムがあります。この外部プログラムが
ループしてしまい、その原因が分からず困っています。
PHPのversionは4.3.11で、CGIモードで動かしています。
OSはDebian(woody)です。
-----
# /usr/local/bin/php-cgi-4.3.11 -v
PHP 4.3.11 (cgi) (built: Aug 9 2005 11:13:47)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
-----
■呼び出し側
ファイル名:test.php
-----
#!/usr/local/bin/php-cgi-4.3.11
<?php
$last_line = system('/home/dev/cb/secure/manage/exec.php', $retval);
echo "Last line of the output: $last_line<br>\n";
echo "Return value: $retval<br>\n";
?>
-----
■呼び出し先
ファイル名:/home/dev/cb/secure/manage/exec.php
-----
#!/usr/local/bin/php-cgi-4.3.11
<?php
echo "hoge<br>\n";
sleep(10);
?>
-----
ここで、test.phpをコマンドラインから実行すると
-----
$ /usr/local/bin/php-cgi-4.3.11 test.php
Content-type: text/html
X-Powered-By: PHP/4.3.11
Content-type: text/html
X-Powered-By: PHP/4.3.11
hoge<br>
Last line of the output: hoge<br><br>
Return value: 0<br>
-----
と、何事もなく終了しますが、
今度は、ブラウザからtest.phpにアクセスすると、画面には、
-----
Content-type: text/html X-Powered-By: PHP/4.3.11 Content-type: text/html X
-Powered-By: PHP/4.3.11 Content-type: text/html X-Powered-By: PHP/4.3.11 C
ontent-type: text/html X-Powered-By: PHP/4.3.11 Content-type: text/html X-
Powered-By: PHP/4.3.11 Content-type: text/html X-Powered-By: PHP/4.3.11 Co
ntent-type: text/html X-Powered-By: PHP/4.3.11 Content-type: text/html X-P
(繰り返しのため省略)
X-Powered-By: PHP/4.3.11 Last line of the output:
Return value: 127
Last line of the output:
Return value: 0
Last line of the output:
Return value: 0
Last line of the output:
Return value: 0
(以下繰り返しのため省略)
-----
といったように表示されます。
ブラウザからアクセスしている間に、psでプロセスの状態を見てみると
-----
6551 pts/3 S 0:00 /usr/sbin/apache
6552 pts/3 S 0:00 \_ [apache]
6553 pts/3 S 0:00 \_ [apache]
6554 pts/3 S 0:00 \_ [apache]
6555 pts/3 S 0:00 \_ [apache]
6556 pts/3 S 0:00 \_ [apache]
8787 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/test.php
8788 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
8789 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
8790 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
8791 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
8792 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
8793 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
8794 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
8795 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
8796 pts/3 S 0:00 | \_ /usr/local/bin/php-cgi-4.3.11 /home/dev/cb/secure/manage/exectest.php
(以下大量の繰り返し)
-----
といったように、呼び出したcgiがループしてしまうのですが、
その原因がわかりません。
どなたか、お知恵を拝借できますでしょうか。
--
Shigetaka Yachi <syachi @ brownmush.net>
PHP-users メーリングリストの案内