• 締切済み

PHP linuxで動作しているプログラムをWindowsにて動作

ご質問させてください。 現在手がけているシステムが、 linux,apache,php にて動作しています。 こちらを開発を容易にするために、 Windowsの開発環境にて動作させたいと考えています。 しかし、いたるところに /usr/local/XXX~ のように絶対パスの記述がPHP上のソースにあり、 簡単には行かない状況です。 上記のような状況のソースがWindowsでも動くようにするために、 何か良いアドバイスをいただけませんでしょうか? Windows上にLinuxの仮想空間を設け(colinuxなどで) C:XXX のディレクトリが /usr/local/XXX のディレクトリであるように見せかけられたりする設定があれば、 可能ではないかと考えております。 是非、良いお知恵を拝借できればと、 本当に困っております。 何卒、何卒、宜しく御願いいたします。

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • tom233
  • ベストアンサー率17% (61/352)
回答No.2

そもそも >/usr/local/XXX~ でどんな物を呼び出している?

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

「容易にする」と有りますが、ソース内のいたるところに、絶対PATHで書いているような低レベルのソースコードをwin上で動かせたとしても、 同じように。 C:\プロジェクト名\ソース\・・ と、win上での絶対PATHを書かれてしまうだけ。 また、winのphpとLinux等のPHPでは多少方言があり、正しく動かない場合があります。 win上のバーチャルマシンを用意してその中に本番環境と同じLinuxを入れて、その中で動かすほうが良いかと思います。 って、それ以前に、絶対PATHをどこかに統一して記述できるようにしておくのが先かと思います。 >C:XXX >のディレクトリが >/usr/local/XXX >のディレクトリであるように見せかけられたりする設定があれば、 >可能ではないかと考えております。 こんな都合の良いものは存在しません。 なぜならば、そのような開発手法をする人が居ないからです。 どぉしてもLinux <=> win というように、開発はwinで、テストや本番がLinuxでというのであれば 例えば、 class Define{ const PROJECT_ROOT = '/usr/local/XXX'; const DOCUMENT_ROOT = '/home/user'; } とか用意しておいて。 include Define::PROJECT_ROOT . 'foo.php'; とか書くようにしておく。 もしくは、 -------config.ini project.root.directory = "/usr/local" document.root.directory = "/home/user" ------- などのような設定ファイルに、pathなどの情報を全て集約させておいて、 win用とlinux用の二つを作っておいて、差し替えるとかね。 方法はいろいろあります。

関連するQ&A

  • Linux+Apache2.0でWebDAVを使いたい・・・

    RedHatLinux9.0でApache2.0をソースからインストールしてWebDAVを利用したいのですがうまくいきません・・・ 現在はソースを解凍して./configure --enable-dav=yes を指定しインストールしています・・・ そしてhttdocs(Apacheホームディレクトリ)に/davを作成してパーミションをテスト用に755に設定・・・ そしてhttpd.confに↓ <Directory "/usr/省略/dav">    DAV On </Directory> を追加し動かしています・・・ そしてLinuxのDAVクライアントCadaverを使用しlocalで接続するのですが・・・ 全然つながりません・・・ むしろ動作していないことになっています・・・ このような状況なのですが分かる方教えてください・・・

  • Linux PHPからSQLServerに接続できない

    Linuxにphpをインストールしたのですが別のWindowsServerのSQLServerに接続することができません。 LinuxにインストールしたMySQLのデータは参照できています。 なにかモジュールやドライバーなどが必要なのでしょうか? ちなみに別のWindowsから該当のSQLServerは接続できているのでホスト名、DB名、User名、Passwordは 正しいと思います。 以下は環境とphpインストール時のオプションです。 もし、不足しているものがあれば教えてください。よろしくお願いします。 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --enable-trans-sid --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql Red Hat Linux 8.0 Apache 2.0.55 php-5.1.2

    • 締切済み
    • PHP
  • PHPモジュールが読み込めない?

    Linuxでサーバーを構築しようと思い、三日三晩試行錯誤してみたのですがどうしてもわからない事があるので質問させていただきます。 Apache、PHPのインストールはエラーなく行えたのですがPHPのインストール後、httpd.confにAddModule文を追加するとApache再起動時に指定したモジュールが見つからない節のエラーが出ます。 ApacheのModuleディレクトリやLibディレクトリ等を探してみたのですが.soファイルが見つかりません。 phpのconfigure時に「CGIとして動作します」的なメッセージが表示されてたのですがそのせいでしょうか? ./configure --prefix=/usr/local/php-5.2.1\ --enable-mbstring\ --with-apxs2=/usr/local/httpd/bin/apxs\ --with-mysql=/usr/local/mysql\ --with-gd --with-zlib --with-jpeg-dir 実行環境 FedoraCore6 Apache-2.2.4 PHP-5.2.1 PHP-4.4.6でもためしてみたのですがうまくいきませんでした。 どなたか原因がわかる方がいたらご教授お願いできませんでしょうか? 初歩的な事で申し訳ないのですがよろしくお願いします。

    • ベストアンサー
    • PHP
  • Debian/GNU Linux V.3.1r1 + PHP4で PHPが突然動作しない

    お世話になります。 Debian/GNU Linux V3.1r1で突然PHP4が動作しなくなってしまいました。 (ダウンロードしますか?となってしまう) 日経Linux2006-1の特集2に記事を参考に、 aptitude install apache2 libapache2-mod-php4 php4-mysql mysql-server としてLAMP環境を用意しました。 数日は正常に動作していたのですが、 (<?php phpinfo(); ?>も正常に表示していました。) 突然上記の状況となりました。 実は、この現象は一度経験があり、その際は aptitude remove apache2 libapache2-mod-php4 php4-mysql mysql-server をして aptitude install apache2 libapache2-mod-php4 php4-mysql mysql-server をしたところ回復しました。 今回は、MySQL内に若干データを入れたのでアンインストール&再インストールの手順は避けたいと思います。 aptitude remove apache2 libapache2-mod-php4 aptitude install apache2 libapache2-mod-php4 では解決しませんでした。 Apache2のデフォルトページは見れるので、Apache2は動作しているようです。 PHP4のモジュールがロードされる記述が見つけられないのですが、どういう仕組みでPHP4のモジュールはロードされるのでしょうか。 また、そのほかにはどのような確認をしたらいいでしょうか。

  • windows上のlinux環境の比較

    私は仕事でサーバー上で動作するlinuxのソフトを開発している者ですが、サーバー上でコンパイル、実行するまえに自分のPCでテストをすることがあります。自分のPCはWindowsでして、これまで cygwin を使ってテストしていました。しかし、cygwinはかなりlinuxと違うところがあり、今、colinuxとか、仮想マシンで動くlinuxを考えております。この種のソフトの長所、短所を比較した記事は無いでしょうか? あるいは体験談をお聞かせ願えればうれしいです。

  • UserDirでCGI版PHPを動作させたい

    お世話になります。 最終的にはsuexecでの動作を目指しておりますが、その前段として UserDirでのCGI版PHPの動作をさせようとしています。 DocumentRoot配下でのCGI版PHPの動作には以下のような設定で成功しました。 [httpd.conf] Action php56-cgi /cgi-bin/php-5.6.27 <Directory "/usr/local/apache2/htdocs/php5test"> Options FollowSymLinks Includes ExecCGI AddHandler php56-cgi .php .html Require all granted </Directory> <IfModule alias_module> : ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" : </IfModule> # ls -l /usr/local/apache2/cgi-bin/php-5.6.27 lrwxrwxrwx 1 root root 22 11月 8 14:58 php-5.6.27 -> /usr/local/bin/php-cgi* /usr/local/apache2/htdocs/php5test/に置いた whoami.php の内容 <?php echo 'Current script owner: ' . get_current_user() . "<br><br>\n"; $current_user = trim(shell_exec('whoami')); echo 'Current user: ' . $current_user . "<br><br>\n"; $c_time = date("Y年n月j日(D) Ah:i"); print("Current time: $c_time<br>\n") ?> http://xx.xx.xx.xx/php5test/whoami.php Current script owner: root Current user: apache Current time: 2016年11月10日... と表示されます。 -------------------------------------------------------------------- ここから本題です。 $ mkdir /home/hoge/php56 $ cd /home/hoge/php56 $ ln -s /usr/local/bin/php-cgi php-5.6.27 $ ls -l lrwxrwxrwx 1 hoge hoge 22 11月 10 11:47 php-5.6.27 -> /usr/local/bin/php-cgi* $ ls -l /home drwxrwxr-x 30 hoge hoge 4096 11月 10 11:43 hoge/ $ ls -l /home/hoge drwxr-xr-x 2 hoge hoge 4096 11月 10 11:47 php56/ drwxr-xr-x 2 hoge hoge 4096 11月 10 10:41 public_html/ $ ls -l /home/hoge/public_html -rw-r--r-- 1 hoge hoge 331 11月 10 10:41 whoami.php [httpd.conf] <IfModule alias_module>内に ScriptAlias /hoge-php/ "/home/hoge/php56" を追加しました。 UserDir public_html Action hoge-php56 /hoge-php/php-5.6.27 <Directory "/home/hoge/public_html"> Options Indexes FollowSymLinks ExecCGI AddHandler hoge-php56 .php .html Require all granted </Directory> ブラウザで閲覧すると http://xx.xx.xx.xx/~hoge/whoami.php forbidden You don't have permision to access /hoge-php/php-5.6.27/~hoge/whoami.php となります。 ScriptAlias, Action がよく理解できていませんので ご指導よろしくお願いします。

    • 締切済み
    • PHP
  • LinuxのPHPのパス

    Linuxのレンタルサーバーで、PHPのパスを調べたのですが、以下のように2つ出てきました。 # whereis php php: /usr/local/bin/php /usr/local/php /usr/local/bin/phpは /usr/local/php5/bin/php-cli-5.2.9につながっていました。 /usr/local/phpの中身はこんなかんじでした。 drwxr-xr-x 2 root root 4096 Jul 2 16:29 bin drwxr-xr-x 2 root root 4096 Jun 25 12:13 etc drwxr-xr-x 3 root root 4096 Mar 17 10:28 include drwxr-xr-x 3 root root 4096 Jul 2 16:34 lib drwxr-xr-x 3 root root 4096 Mar 17 10:29 man drwxr-xr-x 3 root root 4096 Nov 15 2007 php PHPのパスはどちらですか?

    • ベストアンサー
    • PHP
  • php.iniがない

    たびたびお世話になっております。 <環境> Red Hat Enterprise Linux ES v.4 PHP 4.4.2(cli) この度、Apache2とPHPとMySQLをソースからインストールしました。 どれもインストールが終わって、開発に進んだのですが php.iniのextension_dir の値を変更しようと思ったところ php.iniがありません。 # find / -name "php.ini" -ls で検索しましたが、表示されません。 でも、phpinfo()は表示されています。 ちょっと気になったのが、phpinfo()で表示される Configuration File (php.ini) Path が 「/usr/local/lib」となっていて、php.iniで終わっていないことです。 インストールの方法がまずかったのでしょうか? ご教授よろしくお願いいたします。

  • 「ディレクトリゲイト」でPHPを動作させられますか?

    初めまして。 現在「ディレクトリゲイト」を利用して会員サイトを運営しておりますが、会員のページからPHPを利用したいと思っています。http://www.webpower.jp/websofts/others/web_protection/directory_gate/ ディレクトリゲイトでPHPを動作させることはできますでしょうか。 CGIは実行できるので、 PHPをcgiとしてして作動させれば!  と思い、スクリプトの先頭に #!/usr/local/bin/php を記入し、拡張子を.phpから.cgiにして いろいろ試してみましたが、うまくいきませんでした。 専用サーバを利用しているので、設定はいろいろ変更することが できると思います。 よろしくお願い致します。

    • ベストアンサー
    • CGI
  • 空メールでPHPを起動

    CentOS 4.5、Apache 2.0.53、PHP 5.2.4+qmailで空メールのシステムを開発中ですが、Could_not_open_input_fileのエラーが出てPHPのプログラムが起動されません。 システムとしてはから空メール宛先用のユーザー321を追加し、/home/321/の.qmailを | /usr/local/bin/php -q /usr/local/apache2/htdocs_test/htdocs/mail_action2.php としてパーミションを600、所有者を321、stickyビットを立てています。ディレクトリー321も321所有で権限は700です。 呼ばれるmail_action2.phpはテスト用に #!/usr/local/bin/php -q <?php $fp = @fopen("/tmp/test.txt", "w"); $size = fwrite($fp, "xxx"); fclose($fp); ?> としています。所有者は321、権限は604、これもstickyビットを立てました。ディレクトリhtdocsは開発者所有、705の権限です。 これで321に空メールを送ると何も返答がなく、maillog上に greylist[31334]: IP nnn.nnn.nnn.nnn OK - accepting ... qmail: 1xx6.8xx4 delivery 1949: deferral: Could_not_open_input_file:_/usr/local/apache2/htdocs_test/htdocs/mail_action2.php_/ qmail: 1xx6.8xx5 status: local 0/10 remote 0/20 qmail: 1xx3.8xx0 starting delivery 1950: msg 1xx9 to local 321@abc.com qmail: 1xx3.8xx9 status: local 1/10 remote 0/20 qmail: 1xx3.8xx9 delivery 1950: deferral: Could_not_open_input_file:_/usr/local/apache2/htdocs_test/htdocs/mail_action2.php_/ qmail: 1xx3.8xx9 status: local 0/10 remote 0/20 と出ます。(文字数の関係からかなり省略しています。) mail_action2.phpは実行されず、/tmp/test.txtは作成されません。 ひとつ気になるのがSPAM対策としてgreylistを使っているのですが、多分このせいでCould_not_open_input_fileが2回出ていることです。これが影響しているのかもしれません。 どなたか他の方法でも結構ですからお知恵をお貸しください。

    • ベストアンサー
    • PHP