PHPエクステンションのアパッチエラーについて

このQ&Aのポイント
  • PHPのエクステンションを作成し、アパッチエラーが発生しています。
  • .soファイルをextension_dir下に配置し、php.iniファイルを編集してもエラーが出力されます。
  • Cで書かれたソースコードは正常に動作していますが、C++で書かれたソースコードだけ読み込めません。何か解決策はありますか?
回答を見る
  • ベストアンサー

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++で書いたこれだけうまくよみとってくれません。 何かご存知の方がいらっしゃいましたら教えて下さい。

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

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

状況がよく分からないのですが、cからc++のコードを呼び出すには c++のソースで extern "C" void foo();とかしてラッピングしないといけないのですが、どうですか?

toritu
質問者

お礼

すみません!! 忘れていました。 おっしゃるとおりでした。 ありがとうございました。

関連するQ&A

  • PHP5.0.5+postgreSQL8.0.4+apache2.0.55 で質問です。

    上記の構成で、PHP単体での動作OK postgreSQL OK apache OK なのですが、apacheを再起動すると下記の警告が出ます。 PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'pgsql.so' in Unknown on line 0 いろいろ調べたのですが、さっぱり分かりません。 また、当然かも知れませんがphp.iniのextension=pgsql.soをコメントアウトすると警告は出ません。 どこを見直せばいいのか教えていただけないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpのextension_dirを複数指定したい

    php 4.3.9を使用しております。 redhatのup2dateでインストールしたphpを使用しているのですが、 php.iniでextension_dirが extension_dir = /usr/lib/php4 となっておりますが、これを extension_dir = /usr/lib/php4:/another/dir と複数指定したく思っています。 現在extensionの開発をしていて、 毎回自作のextensionをコピーするのがかったるいので なんとかしたいなぁ、というのが目的です。 しかし、上記のように指定すると、 PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4:/another/dir/gd.so' - /usr/lib/php4:/another/dir/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0 (後略) と、すべてのextensionについてエラーが出てしまいます。 何かいい方法はないでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • apache_2.2.11+php-5.2.9-2について

    apache_2.2.11+php-5.2.9-2、mysql5をwindows-xp-pro にセットアップしたのですがphpinfoでmbstring、mysqlともに 表示されません! php.iniのextension=php_mysql.dllのコメントはずしました、 extension_dir="C:\php\ext"も直しました。 apacheもphpも上記のほかは動作しているみたなのですが。 なにか原因をご存知の方おられました宜しくお願い 致します。 PS MYSQLは当たり前ですがコマンドでは普通に 動きます。

    • 締切済み
    • 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のextension_dirのデフォルトは??

    prefix=/usr/local を指定してインストールした場合、 extension_dirのデフォルトはどこになるのでしょうか? 現状はデフォルトのまま下記のようになっています。 extension_dir = "./" php.iniのパスは、/usr/local/etc/php.iniになっています。 libdirはlib64を指定してインストールしました。 extension_dirを変更する事は出来ず、このデフォルトのパスを探り当てなければならず、大変困っています。 php.iniと同階層に位置するのか、それともlibdirと同階層になるのか。 それとも他の場所があるのか。 誰か解るかたがいらっしゃいましたら教えて頂けると助かります!

  • apache2.4にphp5.6をインストール

    お世話になります。掲題の件ですが、 Windows環境下でPHPの動作確認をするためにインストール中なのですが、 Apache2.4+PHP5.4の構成ではPHPが動作せず、 構成ファイルをそのままに、PHP5.6にした所PHPが動作するようになったのですが、 拡張モジュールを読み込んでくれません。 infoを叩いて、Coreの項目を見ると extension_dir C:\php include_path .;C:\php\pear と、なっておりますが、C:\Windows\php.iniのディレクトリの指定は間違っていないと思います。 構成としては、 c:\www にApacheがインストールされており、 c:\www\php にPHP5.6がインストールされています。 http://www.dotup.org/uploda/www.dotup.org5409023.zip.html サンプルとして当方が設定しているhttpdとphp.iniを張り付けておきます。 設定値はほぼ標準で、ポートは8080を使っています。 どうか知恵をお貸しください。どうぞよろしくお願いします。

    • 締切済み
    • PHP
  • apache2.2とphp5の連携がうまくいかない。。

    山田 和夫著 「基礎からのPHP」で挑戦していますがうまくいきません。apacheはしっかり起動していますが、ドキュメントルートにtast.phpを作ってもブラウザからは404で表示されます。なるべく細かく書くつもりなのでご教授お願い致します。 OS windows XP homeEdition ブラウザ firefox2 ■C:/Programfiles/php5/php.ini-dist をphp.iniに変更し修正,470行目辺りに追加  ; Windows: "\path1;\path2"  ;include_path = ".;c:\php\includes"  include_path=".;C:\Program      Files\PHP5\pear;c:\ProgramFiles\php5\includes" 494行目辺りにコメントアウトと追加  ; Directory in which the loadable extensions (modules) reside.  ; extension_dir = "./"  extension_dir = "C:\Program Files\php5\ext" 600行目辺りにコメントアウト  extension=php_gd2.dll  extension=php_mbstring.dll  extension=php_mysql.dll  extension=php_pdo.dll  extension=php_pdo_mysql.dll 1200行目辺りを修正  [mbstring]  ; language for internal character representation.  ;mbstring.language = Japanese  ; internal/script encoding.  ; Some encoding cannot work as internal encoding.  ; (e.g. SJIS, BIG5, ISO-2022-*)  mbstring.internal_encoding = SJIS ■C:/Programfiles/apache softwarefoundation/apache2.2/conf/httpdの LoadModule の最後に追加  LoadModule php5_module "C:\Program Files\php5\php5apache2_2.dll"  PHPiniDir "C:\Program Files\php5" 210行目辺りに追加  <IfModule dir_module> DirectoryIndex index.html index.php  </IfModule> 450行目辺りにコメントを外す  # Language settings  Include conf/extra/httpd-languages.conf ■C:/Programfiles/apache softwarefoundation/apache2.2/conf/mimeに 追加  application/x-httpd-php php ■C:/Programfiles/apache softwarefoundation/apache2.2/conf/extra/httpd-languagesを修正 19行目辺りを変更  DefaultLanguage ja 末尾に追加 AddDefaultCharset shift_jis 以上作業終了後apache2.2を再起動しドキュメントルートにtest.phpを作成しブラウザからhttp://localhost/tast.phpへ。。しかし404 apacheはしっかり起動しています。 お手数ですがご教授ください。 尚、説明不足の場合は質問ください、すぐ答えますので。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • php apache 動かない・・

    画像のようなエラーが出て、.phpファイルを表示してくれません・・。 httpd.confファイルには、 PHPIniDir "C:\php\" LoadModule php5_module "C:/php/php5apache2_2.dll" AddHandler application/x-httpd-php .php とだけ追記しています。 documentrootとかその他全てデフォのままです。 よろしくお願いします・・。 ________________________________________________________________________________ Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required 'C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/index.php' (include_path='.;C:\php\pear') in Unknown on line 0

    • ベストアンサー
    • PHP
  • PHP7のphp.iniが読込みできない

    Windows7 64bitの C:\Apache24にApache2.4をインストールして、 C\php7にPHP7をインストールしました。 (php-7.1.1-Win32-VC14-x64.zipを解凍してできたフォルダをphp7にリネームしてC:\に置きました) それで、Apacheのhttpd.confやphp.iniの必要部分を書き換えて、 C:\Apache24\htdocsに <? phpinfo() ?> と記入したinfo.phpを置いて、Apacheを起動して、 ttp://127.0.0.1/info.phpにブラウザでアクセスしたところ、 phpinfo()の画面が表示されて、インストールできたと思ったのですが、 良く見ると、 php.iniでextension_dir = "c:\php7\ext"と設定しているのに、 extension_dirがC:\php7\extではなく、C:\php\extとなっていて、 mbstringなども読み込まれていないのです。 Loaded Configuration File もnoneとなっていて、php.iniが読み込まれていないようです。 Configuration File (php.ini) Path はC:\windows となっていますが、C:\windows には php.iniは入れていません。 ネットで調べて、httpd.confに PHPINIDir "C:/php7" と記入するといいとあったので、記入してApacheを再起動して info.phpにアクセスしたところ、白紙のページが表示されました。 PHPINIDir "C:/php7"を削除して、Apacheを再起動してinfo.phpにアクセスすると、 phpinfo()の画面が表示されます。 試しに、C:\windowsにphp.iniを入れてみると、また白紙のページになります。 つまり、php.iniを読み込もうとすると白紙にページになっていまうのです。 php.iniにエラーがあるのかと思って、解凍して何も変更していないphp.iniを 使ってみてもだめでした。php.iniの構文チェックができればと思って いろいろ調べたのですがネット上で見つからなかったです。 希望ですが、なんとかphp.iniを読み込んで白紙ではなくページを表示できて、 mbstringなども有効になっていればと思います。 どうぞよろしくお願いします。

    • 締切済み
    • PHP
  • 泣きそうです>< PHPでSQLite3が使えない

    こんばんは 何をどうやっても進まないのでここで質問させてください。 Windows 8にwamp (Apache 2.2.22, PHP 5.4.3) を入れています。 SQLite3を使いたいのですが、sqlite_open 関数に対して「undefined function」というエラーが出てしまいます。 php.ini の内容は次のようになっています。 ;ここから extension_dir = "c:/wamp/bin/php/php5.4.3/ext/" (中略) extension=php_pdo_sqlite.dll ;extension=php_sqlite.dll extension=php_sqlite3.dll (中略) [sqlite] ; http://php.net/sqlite.assoc-case ;sqlite.assoc_case = 0 [sqlite3] sqlite3.extension_dir = "c:/wamp/bin/php/php5.4.3/ext/" ;ここまで 実際、エクステンションディレクトリには php_pdo_sqlite.dll php_sqlite.dll php_sqlite3.dll があります。 phpinfo(); では PDO drivers:mysql, sqlite SQLite Library:3.7.7.1 [sqlite3] SQLite3 support:enabled SQLite3 module version:0.7 SQLite Library:3.7.7.1 sqlite3.extension_dir:c:/wamp/bin/php/php5.4.3/ext/ いったい何が行けないのでしょうか、iniの値を変えるとphpinfo()も変わるので誤った設定ファイルをいじっているのではないと思います。 バージョンなどは冒頭に記載しています。 よろしくお願いします。

専門家に質問してみよう