• ベストアンサー

PHPでLinux用のCライブラリを呼び出す方法?

こんにちは Cライブラリ(*.soまたは*.a)をPHPで呼び出す方法について教えていただきたいのですが。 前にWindows上でもPHPを通してライブラリを呼び出した経験は一切ないので、詳しい説明またはチュートリアルのURLを教えていただけないのでしょうか? 今の環境は Ubuntu 11.10 Apache/PHP/MySQL 静的ライブラリのファイル(*.a) 動的ライブラリのファイル(*.so) そのライブラリのヘッダファイル(*.h) ご回答をよろしくお願いします

  • 2B2B
  • お礼率100% (60/60)
  • PHP
  • 回答数1
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

PHP から、C 言語用のライブラリを直接呼び出す手段はありません。 手順としては、C 言語のライブラリを使うための PHP のエクステンションを作成して、それを PHP からロードして使用する形になります。 エクステンションの作り方については、以下の URL が参考になると思います。 普通に、PHP の関数として呼び出したいだけであれば第2回までの内容で十分です。 ・PHP Extension を作ろう第1回 - まずは Hello World http://dsas.blog.klab.org/archives/50777398.html ・PHP Extension を作ろう第2回 - 引数と返値 http://dsas.blog.klab.org/archives/50782987.html ・PHP Extension を作ろう第3回 - クラスを作ろう http://dsas.blog.klab.org/archives/50903613.html

2B2B
質問者

お礼

ありがとうございます。Linuxの場合は、ライブラリを呼び出すプログラムを作ってPHPのexec()でコマンドを発行することもできるそうです。PHP Extensionの作り方ありがとうございます。作ってみます。

関連するQ&A

  • ubuntuで、PHPからMYSQLが見えません。

    MySQLとPHPがつながりません。 (コマンドラインからはmysqlにログインできます)。 どなたか、原因等わかるかたがいらっしゃったらご教授ください。 バージョンは以下の通りです。 MySQL-5.0.38 Apache-2.0 PHP-5.2.1 ubuntu-7.04 全てapt-get installで、APACHE、MYSQL、PHPの順でインストールしています。 phpinfoでもmysqlの項目表示がされず、またmysql_connectなどの 関連するコマンドも「call to undefined~」のエラーが出力されてしまいます。 /etc/php5/apache2/php.iniに、 extension=mysql.so extension_dir="/usr/lib/perl5/auto/DBD/mysql/ の記述もしてみましたが状況は変わりませんでした。 (/usr/lib/perl5/auto/DBD/mysql/mysql.soをlocateで見つけました) 以上、お手数でございますがどうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Linuxで、標準Cライブラリが読み込まれず、C言語プログラミングができません・・・

    僕の問題はタイトルの通りで、標準Cライブラリが読み込まれていないようで、C言語プログラミングができません。 ubuntuのオフィシャルから日本語ローカライズドDesktopCDをダウンロードして、空のHDDにインストールしました。 ですが、gnome-terminalからccコマンドでプログラムをコンパイルしても、標準Cライブラリにあるはずの<stdio.h>が認識されず、続くprinft関数も読んでくれません。 これはどうしてでしょうか?LinuxはデフォルトでCやらJAVAやらのプログラミングの環境が整っているものだと思っていたので、戸惑っています。何か、セットアップが必要なのでしょうか。 ちなみに、gccでも、標準ライブラリは読み込まれませんでした。

  • Linux Apache MySQL PHP (LAMP)

    今までWindows+Apache+MySQL+PHPの環境で作業をしていたのですが、 別のPCにLinuxをインストールしたので、そちらでもApache+MySQL+PHPをインストールしようと思いました。 ですが、Linuxを触るのは初めてなので、インストール方法やApache+PHPの関連付けの仕方などがサッパリわかりません。 どこか詳しく解説しているサイトなどはないでしょうか? 環境 Linux Fedora Core 5 Apache 2.0.59 (予定) PHP 5.1.6 (予定) MySQL 5.0 (予定) どなたかよろしくお願いします。

    • 締切済み
    • PHP
  • apacheが起動するとき、phpのモジュールが正常に読み込まれたかど

    apacheが起動するとき、phpのモジュールが正常に読み込まれたかどうか調べたい。 /etc/apache2/conf.d/php.confに LoadModule php4_module modules/libphp4.so と書いておりますのでapacheはphp4モジュールをロードします。 #/usr/sbin/apache2 -k start -e debug とすると、 [Wed Oct 01 09:21:10 2010] [debug] mod_so.c(246): loaded module php4_module というようにphp4のモジュールがロードされていることが分かります。 そのPHPモジュールはさらにその先のモジュール(xdebug.soやmysql.soなど)を読み込めていないときのエラーを確認したいのです。例えば/etc/php.d/mysql.iniを編集して extension=mysqlaaaaaaaaaaaaaaaa.so などと有りもしないファイル名を書いたとします。この場合にファイルが見つからないというエラーをどこかに出力させたいのですがどのようにしたらよろしいでしょうか。 上記おかしなパスの状態でphpinfo();を実行しても単にmysqlのセクションが表示されなくなっただけの状態で、エラーはかかれていません。#php -v ではエラーが表示されますが、これとapache起動時のエラーは同一ものではないですよね?! # php -v PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/mysqlaaaaaaaaaaaaaaaa.so' - /usr/lib/php4/mysqlaaaaaaaaaaaaaaaa.so: cannot open shared object file: No such file or directory in Unknown on line 0 バージョン apache 2.2.3 php 4.4.8 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP:エクステンションのアパッチエラーについて

    PHPのエクステンションを作成しています。 .soまで作成したので、これをextension_dir下に置き、 php.iniファイルにextension = xxxxxx.soを追加し、アパッチを再起動しました。 下記のようなエラーが出力されます。 PHP Warning: Unknown(): Invalid library (maybe not a PHP library) 'xxxxxx.so' in Unkn own on line 0 元のソースをCで書いたものについては何も問題なくうまくいっているのですが、C++で書いたこれだけうまくよみとってくれません。 何かご存知の方がいらっしゃいましたら教えて下さい。

  • PHPからMySQLが動かせません

    PHPからmysqlのテーブルを開こうとした際に Fatal error: Call to undefined function mysql_connect() という一文が出ました。 php.iniのextension_dirのパスは一字一句間違っておりませんし、 extension=mysql.so extension=mysqli.so の二文も追加しました。また、その二つのファイルがあることも確認済みです。 また、phpファイルの構文は以下のとおりになっています。 $link = mysql_connect('ローカルホスト', 'ユーザー名', 'パスワード'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('<p>接続に成功しました。</p>'); こちらもいろいろ調べまして、php_mysql.soとphp_mysql.soがないためではないかなどとかんぐっておりますが、そういった記述は私が調べた限りにおいては見かけませんでした。 php_mysql.soとphp_mysql.soというファイルはなくても、mysql.soとmysqli.soというファイルがあれば動くのでしょうか? 仮にphp_mysql.soとphp_mysql.soというファイルがないと動かない場合、何をインストールすればよいのでしょうか? ご回答よろしくお願いします。 また、PHPとMySQLはソースファイルを/usr/ports/distfilesディレクトリにコピーした上でポートからmake、make installしました。 マシンスペック OS…FreeBSD6.4 Apache…1.3.14 PHP…5.2.8 MySQL…5.0.92 都合上、バージョンを他のものに変更することはできません。 追記してくれということがありましたらよろしくお願いします。

  • スタティックライブラリの使い方

    Linuxで使えるCのライブラリを落としてきたのですが、使ったことがないので戸惑っています。 パッケージは、makefile , .c , .h の3つで、makeするのはできました。で、ライブラリ.a が出力されまして、このファイルを使え!と説明書にはあるのですが、この先がよくわかりません。 とりあえず、出力されたライブラリを/usr/lib あたりに入れて、自作のプログラムで先ほどのライブラリのヘッダをインクロードするところまではできたのですが・・・。 コンパイルすると、/usr/bin/ld: cannot find -ライブラリ と出てしまいます。教えていただけますでしょうか。

  • C++での静的ライブラリの作成方法

    C++での静的ライブラリの作成方法 今まで独学でC++を勉強してきたのですが、既存ライブラリのラッパーを作りたいと思います そこで、色々なサイトなどで調べてみたのですが、いまいちライブラリというものについて納得の出来る解説のあるサイトが見つからなかったので、質問させて下さい まず私が元にするライブラリの構成は hoge.h foo.lib bar.lib となっており、その関数などを使用する独自型のクラスや、それをさらに扱うクラスなどを作っています その場合、ふたつのクラスをひとつのlibファイルに一緒にしてもいいものなのか、 はたまた分けてそれぞれlibファイルにするのか、 複数できたヘッダはプロジェクトに追加するときどれを入れるのか、 インクルードやリンクはどこに張ればいいのか、 libファイルにヘッダは含まれているのか、など 基本的なことが全然わからず、身近に聞ける人もいなくずっと手探り状態です よろしければ全体のファイル構成や作り方、使い方などの基本的なことから教えて下さい あと別件なのですが、クラスのインスタンスが生成されたときにメンバ変数はメモリに動的に配置されると思うのですが、メンバ関数はどうなるのでしょうか? インスタンスごとに同じく生成されるのか、宣言の時に既に一箇所に用意されていて、毎回そこに飛ぶのでしょうか? よろしくお願いします!

  • C/C++のヘッダーファイルやライブラリー関数について

    C言語の勉強をはじめました。コードの最初に書く#include<stdio.h>などの ヘッダーファイルやライブラリ関数を見ることはできるのでしょうか? 初歩的なことですみませんがよろしくお願い致します。

  • PHPからMySQLへ接続設定

    お世話になります Fedora core3を使って PHPとMySQLを設定しているのですが 上手くいきません。よろしくお願いします。 現状としては、PHPは動作しています。 MySQLもターミナルからは動作確認できています。 ところがPHPからMySQLにつながりません。 方法は $conn = mysql_connect($hostname, $usrname, $password) としています。 どこの設定を見ればいいのか等教えていただけないでしょうか? 環境 OS:fedora core3 Apache:Tera Termにてrpm -q apacheで調べたのですが文字化けしてわかりません^^; Fedora core3で標準で入っているものと思います PHP:PHP4.3.11、関係ないかもしれませんが、php -vでversionを調べようとすると PHP Warning:Unknown(): Unable to load dynamic library '/usr/lib/php4/msql.so と出ます 以上よろしくお願いします

専門家に質問してみよう