PHP. pl (PERL) dosyasını dahil etmek için nasıl

4 Cevap php

i iki sayfa php bir (index.php) ve Perl (dbcon.pl) başka bir tane var.

Temelde benim php dosya sadece UI göstermek istiyorum ve tüm veri işlemleri Perl dosyası bitmiş olacaktır.

i have tried in index.pl

<?php include("dbcon.pl");?>
<html>
<br/>PHP</br>
</html>

ve dbcon.pl var

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

use CGI::Simple;
my $cgi = CGI::Simple->new;
my $dsn = sprintf('DBI:mysql:database=%s;host=%s','dbname','localhost');

my $dbh = DBI->connect($dsn,root =>'',{AutoCommit => 0,RaisError=> 0});


my $sql= "SELECT * FROM products";
my $sth =$dbh->prepare($sql);
$sth->execute   or die "SQL Error: $DBI::errstr\n";
while (my @row = $sth->fetchrow_array){
print $cgi->header, <<html;
<div>&nbsp;@row[0]&nbsp;@row[1]&nbsp;@row[2]&nbsp;@row[3]&nbsp;@row[4]</div>
html
}

i tarayıcınızda index.php çalıştırdığınızda ancak yürütme yerine dbcon.pl dosyasındaki tüm kodunu basar

Bu sorunun üstesinden nasıl?

not: i windows ortamında bu çalıştırıyorum

Bunu yapmak için başka bir yolu var mı?

4 Cevap

Ben sorunun gerçekten ne olduğunu sorabilir miyim? Ben Perl kodu "özel" bir şey görmek, bu yüzden ya da yok:

a) (yani PHP biliyorum) ya da yok PHP sizin DB erişmek için nasıl bilmiyorum

b) (yani Perl biliyorum) ya da yok Perl ne yaptığını bilmiyorum

c) muhtemelen ortamı Perl DBI kullanın böylece kurulur ancak PHP aynı yapamaz.

Bu link size PHP doğrudan Perl ne yaptığını işaretçileri vermelidir. Kolayca çeşitli PHP / DB kombinasyonları için örnekler onlarca bulabilirsiniz.

Diğer tek yolu başka bir poster anlaşılacağı ne olacaktır: Perl betiği çağırmak ve (dışarı standart yazdırılır) sonucu ayrıştırmak.

Yalnızca (deftere örnek böyle değil) bir Perl modülü olarak kullanılabilir bir şey kullanmak kesinlikle umutsuz olmadıkça bu rubygoldbergsque kırılgan ve bir çözüm olarak kabul edilemez.

Ve bunu yapmak - Bir şey bir dilde yapılması ve diğer bazı dil kullanmak istiyorsanız genel olarak en iyi yolu (sizin durumunuzda) Perl "sunucu" bir tür, yani ayrı bir süreç olarak çalışmasını sağlamak olacaktır XML-RPC ya da diğer hafif protokolünü kullanarak hizmetleri ortaya.

Exec () VEYA BENZERİ yapıları ile PROGRAMLARINI çağırarak DERECE KÖTÜ uygulamadır.

Ne çalıştığınız o kadar kolay mümkün değildir. PHP ile perl çalıştırmak zorunda olacak, çıkış yakalamak ve bu gibi yazdırın:

<?php echo exec('perl dbcon.pl'); ?>

Belirtildiği gibi, bunu yapmak için iyi bir şey değildir. Backend ve kullanıcı arayüzü arasında iyi ayrılması için varolan PHP çerçeveler bir göz olmalıdır.

Perl PECL package PHP içine Perl entegre var.

P.S. Perl Şablon Toolkit gibi çiftleşmiş sistemini kullanmak daha iyidir IMHO. Hatta Perl şablonları içinde kullanabilirsiniz.

Eğer kullanıyorsanız Catalyst bize Catalyst::View::PHP Ben size çiftleşmiş sistemi olarak php nasıl kullanılacağı hakkında daha fazla ipucu verecektir şüpheli olabilir. Ayrıca, söz PHP::Interpreter