[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 メーリングリストの案内