私は最近、サーバーにxdebug
をインストールしましたが、その使用を、独自のphp.ini
ファイルを使用するテストサイトに制限しました。
たとえば、テストサイトphp.ini
は次の場所にあります。
/home/test_site/public_html/subdomain_name/php.ini
このphp.ini
ファイル内に、xdebug用の以下があります。
[XDebug]
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = /home/test_site/xdebug
xdebug.profiler_output_name = "cachegrind.out.%s-%u.%h_%r"
さて、問題はxdebug worksで問題ありません。
ただし、メインサイトでは、独自のphp.ini
ファイルもあり、たとえば次の場所にあります。
/home/main_site/public_html/php.ini
このファイル内には、xdebug
の何もありません。
現在、cpanelでmain site
用に次のようなcronを設定しています。
php -f /home/main_site/public_html/cron_jobs/main_cron.php > /home/main_site/public_html/logs/main_cron.log 2>&1
ここで、ログファイル内のcronの出力を確認すると、出力が得られます。
Failed loading xdebug.so: xdebug.so: cannot open shared object file: No such file or directory
メインサイトがxdebugをロードすべきではないのに、なぜこのエラーが発生するのですか?
2つのサイトを分割して2つの異なるphp.iniファイルを使用している場合でも、CRONは、PHP-CLIが使用するように構成されているphp.iniファイルを使用します。したがって、どのphp.ini CRONが使用されているかを把握するには、次のコマンドを使用します。
php -i | grep php.ini
PHP-CLIが、使用するはずのないphp.iniファイル(/usr/local/lib/php.ini
など)を使用している場合、それが、Xdebugエラーがログ。
/usr/local/lib/php.ini
ファイルには、次の2つの値が設定されていることがわかります。
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626"
zend_extension = "xdebug.so"
Zend_extensionsにはモジュールへのフルパスが必要なため、CRON(PHP-CLIなど)によって実行されたphpスクリプトからのエラーが原因でした。これはXdebugのドキュメントにも記載されています。 http://xdebug.org/docs/install
したがって、エラーを取り除くには、その行をコメント化する(または削除する)だけです。次のような他のモジュールをロードしない限り、extension_dir
行をコメント化または削除することもできます。
extension = memcached.so
Php.iniでパスを指定するか、mods-availableでlibを追加することにより、XDebugライブラリがロードされる場所から難しい場合があります。
まず、実行します:
$ Sudo grep 'xdebug' -r /etc/php/*
これにより、拡張機能をロードするファイルが提供されます。
次に、使用されているphp.iniを特定します。
$ php -i | grep php.ini
これにより、使用中のphpバージョンが表示されます(複数のphpバージョンがある場合)。次に、phpバージョンを最初のステップの結果にリンクします。
ここで、xdebug拡張機能が読み込まれる行をコメント化するか、/ xdebug.iniファイル(拡張機能を読み込む)を/ etc/php/xx/mods-available(xxは使用中のphpバージョンを表す)から削除する必要があります)。
参考までに、Linux Mintと私は一部のUbuntuシステムで考えています。 php.iniを変更するには、/ etc/php/7.0/cli/conf.dに移動してxdebug.iniを探し、上記の投稿にある行を変更する必要があります。 。