[PHP-users 15673]PHPスクリプト内からPHP呼び出してエラー
shin ohira
shin @ ohira.com
2003年 6月 4日 (水) 12:09:41 JST
いつもお世話になっております、おおひらともうします。
PHP 内から PHP を呼び出した場合に無限ループ(?) するという
現象が発生しています。
過去ログには、類似の現象についての記事を見つけられませんでした。
回避策や対処法ご存知のかたいらっしゃいましたら、おしえてください。
概要
PHPで記述した cgi 内から PHP で記述したプログラムを
system 関数で呼び出すと PHP のプロセスが大量に発生してしまい
正常に終了しない。
現象の説明
小さい再現プログラムを作成して調べたところ、コマンドラインからの
実行では問題ないのに、ブラウザーから実行すると正常終了しない。
telnet で 80 ポートにつないで実行しても同じ現象。
system を passthru に書き換えることで、小さい際限プログラムでは
問題無くなったように思えたが、再度目的のプログラムで passthru に
書き換えてみたところ、system で実行した場合と同じ動作になってしまいました。
phpのプログラムから呼び出すプログラムがCで書かれてコンパイルされたものだったり
sh のスクリプトだったりした場合には、問題が発生しませんでした。
再現プログラム 1
#!/usr/local/bin/php
<?
print("start Test 1\n" ) ;
system("/usr/home/shin/public_html/cgi/test/test2.cgi") ;
//passthru("/usr/home/shin/public_html/cgi/test/test2.cgi") ;
print("end Test 1\n" ) ;
?>
再現プログラム 2
#!/usr/local/bin/php -q
<?
print("Test 2\n" ) ;
?>
再現プログラム 3
#!/bin/sh
echo TEST 22
コマンドラインからの実行結果
> ./test1.cgi
Content-type: text/html
X-Powered-By: PHP/4.3.1
start Test 1
Test 2
end Test 1
OS
FreeBSD 4.8-STABLE
PHP
PHP 4.3.1 (cgi), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies
APACHE
apache_1.3.27> cat config.status
#!/bin/sh
##
## config.status -- APACI auto-generated configuration restore script
##
## Use this shell script to re-run the APACI configure script for
## restoring your configuration. Additional parameters can be supplied.
##
./configure \
"--with-layout=Apache" \
"--enable-module=so" \
"--enable-suexec" \
"--suexec-docroot=/home" \
"--suexec-caller=apache" \
"$@"
マニュアル
system 外部プログラムの実行と表示
http://www.php.net/manual/ja/function.system.php
マニュアル
passthru 外部プログラムを実行し、未整形の出力を表示します
http://www.php.net/manual/ja/function.passthru.php
PHP-users メーリングリストの案内