web-dev-qa-db-ja.com

HomebrewによってインストールされたPHP7はmacOS上のApacheで動作しません

Homebrewでインストールしたphp7にアップグレードしようとしています。

CLIではphp -vが戻ります

PHP 7.0.10 (cli) (built: Aug 21 2016 19:14:33) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

しかし、localhostの場合、firefoxは問題のある読み込みページをポップアップし、localhost/phpinfo.phpを表示できません。モジュールの行をphp5に戻すと正常に機能します。

ここにペーストビンがあります http://Pastebin.com/950yC7wA 私のApache2/httpd.confの、これを修正する方法がわかりません。

  • osxバージョンEl Capitan 10.11
26
Arthur

以下を確認してください。

  • ApacheモジュールをサポートするPHPをインストールしました(brew options php71を参照)。

    例えば。 --with-httpd22または--with-httpd24が含まれます。

  • brew info php71の指示に従いました

    ==> Caveats
    To enable PHP in Apache add the following to httpd.conf and restart Apache:
        LoadModule php7_module /usr/local/opt/php71/libexec/Apache2/libphp7.so
    
        <FilesMatch .php$>
            SetHandler application/x-httpd-php
        </FilesMatch>
    
    Finally, check DirectoryIndex includes index.php
        DirectoryIndex index.php index.html
    
  • Sudo apachectl restart経由でApacheを再起動しました。

ステップごとのチュートリアルについては、 Apache、MySQL、およびPHP macOS SierraでHomebrewを使用 をセットアップしてください。

トラブルシューティング

  • 何かが機能しない場合は、次の方法でリアルタイムでログを確認してください。

    tail -f /usr/local/var/log/Apache2/*error*
    

    次に、サーバーを起動/再起動します。

    注:終了したら、ヒット Control-C tailを終了します。

13
kenorb

Homebrew は優れたツールですが、時には不要です。

Mac OS XにApache、PHP、MySQLをインストールする の投稿で言及していますが、OS XにはApacheとPHPがプリインストールされています。そのため、それらを設定して有効にするだけです。

残念ながら、Mac OS 10.11(El Capitan)では、PHPバージョンはまだ5.5です。 PHP 5.5はEOLなので、これは10.12(Sierra)で変わると思います。ただし、PHP 5.6のみです。

PHP 7をインストールするには、 PHP OSX を使用することをお勧めします。 PHPバージョン5.3から7.1(最新)のパッケージインストールを提供します。 Mac OS 10.6+(Snow Leopard)で利用可能です。

パッケージインストールであるため、デフォルトのApacheインストールですぐに使用できます。 PATHを更新し、PHP iniファイルを変更するだけです。両方とも [〜#〜] faq [〜#〜] で概説されています。

ステップごとの詳細なチュートリアルが必要な場合は、 Mac OS XのPHPの更新 に関する最近の投稿をご覧ください。

12
Jason McCreary

OS X SierraでApacheを使用している場合、php7にはデフォルトでApacheモジュールが付属していません。

MacOS Sierraのリリースでは、Apacheモジュールはデフォルトでビルドされません。システムでビルドしたい場合は、-with-Apacheオプションを付けてphpをインストールする必要があります。詳細については、醸造オプションphp70を参照してください。

フラグを付けて再インストールしてみてください。

brew reinstall php70 --with-Apache
4
Flo Schild

ランニング $ apachectl -tは、現在の構成に関する問題を表示します。私がそれを実行したとき、私はこれを得ました:

httpd:/private/etc/Apache2/httpd.confの171行目の構文エラー:/usr/local/opt/php70/libexec/Apache2/libphp7.soをサーバーにロードできません:dlopen(/ usr/local/opt/php70 /libexec/Apache2/libphp7.so、10):シンボルが見つかりません:_ldap_control_find\ n参照元:/ usr/local/opt/php70/libexec /Apache2/libphp7.so\n予想される場所:/System/Library/Frameworks/LDAP.framework/Versions/A/LDAP\n in /usr/local/opt/php70/libexec/Apache2/libphp7.so

githubに投稿されたこの回避策 を確認できます。LDAPサポートなしでパッケージをインストールすると、このエラーが防止されます:

brew reinstall php70 --without-ldap

3
HPierce

私も同じ問題を抱えていたので、/etc/Apache2/httpd.conf

LoadModule php5_module libexec/Apache2/libphp5.so
3
dmac

あなたの問題に対する直接的な解決策ではありませんが、OS Xのphpには無数の問題があります。ごく最近、El Capitanへのアップグレード後にOCIライブラリを動作させようとしていました。

私は今それを使用しようとしてあきらめ、私の開発にdockerを使用し始めました。私はそれをはるかに優れたソリューションとして見つけ、同じコードベースで複数の環境をセットアップすることさえできます。これは異なるバージョンをテストするのに本当に役立ちます。

DockerはOS Xでのセットアップが非常に簡単で、リポジトリに膨大な範囲の事前構築済みコンテナーがあります。ソースディレクトリにマウントポイントをインストールして設定し、アクセスに使用するポートを使用します。

3
Ben Cummins

今日、httpd.confファイル(/usr/local/etc/httpd/httpd.conf)に異なるphpライブラリをロードする新しいパスを発見しました。

### OLD VERSION (NOT WORKING NOW)  ###
#LoadModule php5_module    /usr/local/opt/php56/libexec/Apache2/libphp5.so
#LoadModule php7_module    /usr/local/opt/php70/libexec/Apache2/libphp7.so
#LoadModule php7_module    /usr/local/opt/php71/libexec/Apache2/libphp7.so
#LoadModule php7_module    /usr/local/opt/php72/libexec/Apache2/libphp7.so

### NEW VERSION ###
#LoadModule php5_module    /usr/local/opt/php56/lib/httpd/modules/libphp7.so
#LoadModule php7_module    /usr/local/opt/php70/lib/httpd/modules/libphp7.so
#LoadModule php7_module    /usr/local/opt/php71/lib/httpd/modules/libphp7.so
LoadModule php7_module    /usr/local/opt/php72/lib/httpd/modules/libphp7.so
1
vincent

この問題が発生する可能性がある場合は、「apachectl restart」を使用してApacheを再起動できることを確認してください。私の場合、最初にコマンド「httpd stop」を使用してhttpdのすべてのプロセスを停止し、次に「apachectl start」を使用してApacheを起動する必要がありました。

0
Naresh Dhiman

私はそれが非常に古いトピックであることを知っていますが、PHP

LoadModule php5_module libexec/Apache2/libphp5.so

への変更:

LoadModule php7_module libexec/Apache2/libphp7.so
0
Wordica