-5


0

PHPに.pl(PERL)ファイルを含める方法

php(index.php)に2ページ、Perl(dbcon.pl)に2ページあります。

基本的に、私は私のphpファイルにUIのみを表示し、すべてのデータ操作はPerlファイルで行われるようにします。

私はindex.plで試しました

PHP

dbcon.plには

#!/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, < @row[0] @row[1] @row[2] @row[3] @row[4]
html
}

しかし、ブラウザでindex.phpを実行すると、dbcon.plファイルのすべてのコードが実行される代わりに印刷されます

この問題を克服する方法は?

注:私はこれをWindows環境で実行しています

これを行う他の方法はありますか?

4 Answer


5


問題が実際に何であるかを尋ねてもいいですか? Perlコードには「特別」なものは何もないので、次のいずれかを行います。

a)PHPからDBにアクセスする方法がわからない(つまり、 あなたはPHPを知らない)または

b)Perlが何をしているかわからない(つまり、 Perlを知らない)または

c)Perl DBIを使用できるように環境が設定されている可能性がありますが、PHPからは同じことはできません。

この* http://www.w3schools.com/php/php_db_odbc.asp [link] *は、PerlでPHPから直接実行していることを実行するためのポインターを提供する必要があります。 さまざまなPHP / DBの組み合わせのサンプルが簡単に見つかります。

他の唯一の方法は、別のポスターが提案することを行うことです。Perlスクリプトを呼び出して、結果を解析します(標準出力に出力されます)。

これはrubygoldbergsqueであり、脆弱であり、Perlモジュールとしてのみ使用可能なものを使用することを切望していない限り、解決策として受け入れられません(投稿した例とは異なります)。

一般に、ある言語で何かをして、それを他の言語から使用したい場合、最良の方法は(あなたの場合)Perlを一種の「サーバー」として実行させることです。 別のプロセス-XML-RPCまたはその他の軽量プロトコルを使用してサービスを公開します。

exec()または類似の構造を使用したプログラムの呼び出しは、非常に悪い習慣です。


2


あなたがしようとしていることは簡単ではありません。 PHPでperlスクリプトを実行し、出力をキャプチャして次のように出力する必要があります。


述べたように、それは良いことではありません。 バックエンドとユーザーインターフェイスを適切に分離するには、既存のPHPフレームワークを確認する必要があります。


2


PerlをPHPに統合するためのhttp://pecl.php.net/package/perl[Perl PECLパッケージ]があります。

P.S. 私見では、PerlのTemplate Toolkitのようなテンプレートシステムを使用することをお勧めします。 テンプレート内でPerlを使用することもできます。


0


Catalystを使用している場合は、http://search.cpan.org/dist/Catalyst-View-PHP/を使用できます。 lib / Catalyst / View / PHP.pm [Catalyst

View :: PHP] PHPをテンプレートシステムとして使用する方法について、より多くの手がかりが得られると思います。 また、http://search.cpan.org/dist/PHP-Interpreter/lib/PHP/Interpreter.pm [PHP :: Interpreter]にも言及しています。