2015-08-06 18 views
10

Câu hỏi của tôi là, điều này được mong đợi (và tại sao?) Và/hoặc hành vi này có được thấy trên các hệ thống khác không?Perl exec ('/ usr/bin/php -v') treo trên CentOS 6.6 trừ khi STDIN được đóng trước tiên

Môi trường:

# cat /etc/*-release 
CentOS release 6.6 (Final) 
... 
# perl -v 

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi 
... 
# php -v 
PHP 5.4.41 (cli) (built: May 14 2015 23:15:28) 
... 

mini.pl:

#!/usr/bin/perl 
exec('/usr/bin/php -v'); 

Chạy nó và xem quy trình PHP treo:

# perl mini.pl & 
[2] 16958 
[1] Killed     perl mini.pl 
# ps ax | grep 16958 
16958 pts/2 T  0:00 /usr/bin/php -v 
16960 pts/2 S+  0:00 grep 16958 

[2]+ Stopped     perl mini.pl 

Nhưng nếu tôi đóng STDIN:

mini.pl:

#!/usr/bin/perl 
close(STDIN); 
exec('/usr/bin/php -v'); 

Nó chạy tốt:

# perl mini.pl & 
[1] 16976 
# PHP 5.4.41 (cli) (built: May 14 2015 23:15:28) 
... 

[1]+ Done     perl mini.pl 
# ps ax | grep 16976 
16978 pts/2 S+  0:00 grep 16976 

ghi chú khác:

  • tôi không thể tái tạo hành vi treo này trên Mac OS X (perl 5.18.2, php 5.5.24)

Cảm ơn,

+0

Tôi thấy rằng nếu tôi biên dịch PHP từ mã nguồn, nó hoạt động tốt (so với hành vi treo này mỗi 'yum install php'). Vì vậy, tôi sẽ sử dụng cách giải quyết đó. –

Trả lời

1

Tôi vừa thử nghiệm điều này trên Ubuntu 14.04 và RHEL 6.7, và không thể tái tạo vấn đề.

Tôi nghi ngờ có một lỗi khiến cho cả hai đều in phiên bản và cố gắng xử lý STDIN dưới dạng mã PHP. Khi đang treo, hãy thử nhấn Control-D hoặc nhập một vài dòng HTML/PHP và sau đó nhấn Control-D để xem liệu đầu vào của bạn có được xử lý hay không.

1

Tôi có một CentOS có cùng vấn đề, được giải quyết bằng cách thêm dấu và (&) vào cuối cuộc gọi hệ thống trong khi bạn có thể giữ yum.

Tôi thực sự sử dụng tập lệnh python để gọi cho php, cùng một vấn đề.

Vấn đề thực sự - không xác định, nếu có ai đó có ý tưởng nào đó, vui lòng cho tôi biết.

Giải pháp:

exec("/usr/bin/php -v &"); 
`/usr/bin/php -q ./mini.php &`; 

os của tôi:

CentOS release 6.4 (Final) 
CentOS release 6.4 (Final) 

[[email protected] perl_tools]$ perl -v 

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi 
[[email protected] perl_tools]$ php -v 
PHP 5.3.3 (cli) (built: Jul 9 2015 17:39:00) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
with Xdebug v2.1.4, Copyright (c) 2002-2012, by Derick Rethans 
[[email protected] perl_tools]$ 

Issue nhân đôi:

[[email protected] perl_tools]$ perl mini.pl & 
[1] 29744 
[[email protected] perl_tools]$ ps uax|grep php 
gliang 29744 0.1 0.3 341016 8728 pts/0 T 20:27 0:00 /usr/bin/php -v 
gliang 29756 0.0 0.0 103248 812 pts/0 S+ 20:27 0:00 grep php 

[1]+ Stopped     perl mini.pl 
[[email protected] perl_tools]$ 
Các vấn đề liên quan