ホームページ > バックエンド開発 > PHPチュートリアル > php cli設定ファイルに関連する問題

php cli設定ファイルに関連する問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 12:25:50
オリジナル
935 人が閲覧しました

PHP cli 設定ファイルの問題

はじめに

今日、他の人に protobuf の使い方を教えていたときに、偶然 PHP cli モードで奇妙な問題を発見しました。解決策を見つけるのに長い時間がかかりました。ここで共有してください。

問題の説明

最初に protobuf プロトコルを導入し、allegro/php-protobuf 拡張機能を使用してインストールしました。他の同僚もここ数日でこれを使用する予定なので、PHP クラス ライブラリ ファイルを生成する protobuf の部分を、これらのコンテンツを含む公開場所の /data/php_proto/ フォルダーに、

<code>drwsrwxr-x 2 yanruitao users 4096 10月 14 17:05 Dmp-rwxrwxr-x 1 yanruitao users  472 10月 10 17:59 dmp.protodrwsrwxr-x 2 yanruitao users 4096 10月 10 17:54 ProtobufCompiler-rwxrwxr-x 1 yanruitao users 2969 3月   9 2015 protoc-php.php</code>
ログイン後にコピー

の後ろに置きました。 2 つは必要で、pb プロトコル実装クラス ライブラリ ファイルを生成するときに使用されます。最初の 2 つは単純な例であり、次のように非常に簡単に使用できます。

<code>php protoc-php.php -n --psr dmp.proto //-n是使用命名空间,--psr是使用psr-4标准</code>
ログイン後にコピー

同僚が使用したところ、エラーが報告されることがわかりました。

<code>PHP Warning:  file_put_contents(pb_proto_dmp.php): failed to open stream: Permission denied in /data/php_proto/ProtobufCompiler/ProtobufParser.php on line 309</code>
ログイン後にコピー

同僚に尋ねられたとき、私は直接、sudo を追加してくださいと言いました。その結果、sudo の問題が発生し、さらに悪いことに、最初にインストールされた拡張プログラムがロードできませんでした。いくつかのトラブルシューティングを行った結果、次の問題が見つかりました:

<code>$yanruitao: php -i | grep 'php.ini'$yanruitao: sudo php -i | grep 'php.ini'</code>
ログイン後にコピー

2 人のユーザーが同じ設定ファイルをロードしませんでした。一般ユーザーがロードしたのは /usr/local/php/lib/php.ini で、root ユーザーがロードしたファイルは /etc/php.ini でした。ははは、すぐにバックアップしました。 🎜> を最初にコピーし、 /etc/php.ini/usr/local/php/lib/php.ini にコピーしました。コピー後、再度使用するとショックを受け、多くのエラーが報告されました: /etc/php.ini

<code>PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/web_stub_cntl.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/web_stub_cntl.so: undefined symbol: zend_new_interned_string in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/web_stub_cntl.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/web_stub_cntl.so: undefined symbol: zend_new_interned_string in Unknown on line 0PHP Warning:  PHP Startup: test: Unable to initialize moduleModule compiled with module API=20100525PHP    compiled with module API=20090626These options need to match in Unknown on line 0Warning: PHP Startup: test: Unable to initialize moduleModule compiled with module API=20100525PHP    compiled with module API=20090626These options need to match in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/protobuf.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/protobuf.so: undefined symbol: zend_new_interned_string in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/protobuf.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/protobuf.so: undefined symbol: zend_new_interned_string in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/imagick.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/imagick.so: undefined symbol: zend_new_interned_string in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/imagick.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/imagick.so: undefined symbol: zend_new_interned_string in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/data/boss/phpredis-develop/modules/redis.so' - /data/boss/phpredis-develop/modules/redis.so: undefined symbol: zend_new_interned_string in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/data/boss/phpredis-develop/modules/redis.so' - /data/boss/phpredis-develop/modules/redis.so: undefined symbol: zend_new_interned_string in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/curl.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/curl.so: cannot open shared object file: No such file or directory in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/curl.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/curl.so: cannot open shared object file: No such file or directory in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/fileinfo.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/fileinfo.so: cannot open shared object file: No such file or directory in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/fileinfo.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/fileinfo.so: cannot open shared object file: No such file or directory in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/gd.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/gd.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/json.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/json.so: cannot open shared object file: No such file or directory in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/json.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/json.so: cannot open shared object file: No such file or directory in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/phar.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/phar.so: cannot open shared object file: No such file or directory in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/phar.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/phar.so: cannot open shared object file: No such file or directory in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/data/boss/phpredis-develop/modules/redis.so' - /data/boss/phpredis-develop/modules/redis.so: undefined symbol: zend_new_interned_string in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/data/boss/phpredis-develop/modules/redis.so' - /data/boss/phpredis-develop/modules/redis.so: undefined symbol: zend_new_interned_string in Unknown on line 0PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/zip.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/zip.so: cannot open shared object file: No such file or directory in Unknown on line 0Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/zip.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/zip.so: cannot open shared object file: No such file or directory in Unknown on line 0protoc-php.php requires protobuf extension installed to run</code>
ログイン後にコピー
これは私を混乱させました。

長い時間が経ちましたが、この問題に対するバックアップの解決策を見つけました。

フォルダーのアクセス許可を 0775 に変更すると、他の一般ユーザーは sudo を追加せずに直接使用できるようになります。原因は、フォルダーのアクセス許可を変更するのを忘れたため、この奇妙な問題を発見することにもなりました) /data/php_proto/

<code>chmod -R 0775 /data/php_proto</code>
ログイン後にコピー
報告されたこれらのエラーを読んだ後、それらのほとんどは拡張機能の問題であり、拡張機能の読み込みに失敗したものもあれば、拡張機能の読み込みに失敗したものもあります。拡張機能が存在しないのに、なぜ一般ユーザーはできるのに root ユーザーはできないのか疑問に思っていました。

root ユーザー

を表示すると、設定ファイルは root 以外のユーザーと矛盾します: php -i

<code>//非rootScan this dir for additional .ini files => (none)Additional .ini files parsed => (none)//rootScan this dir for additional .ini files => /etc/php.dAdditional .ini files parsed => /etc/php.d/curl.ini,......</code>
ログイン後にコピー
設定ファイルの名前付けとロードは同じです。 ロード方法。内容が違うのですか?

長い間検索した結果、報告されたエラーの一部がこれに関連していることがわかりましたが、長い間検索してもどこを修正すればよいのかわかりませんでした。

突然、root ユーザーと非 root ユーザーが使用する php 実行可能ファイルが矛盾していることに気づきました。

<code>root => /usr/bin/php非root => /usr/local/bin/php</code>
ログイン後にコピー
これら 2 つのファイルに対して

を使用してみましたが、混乱しています。root ユーザーのバージョンは 5.3.3 で、非 root ユーザーのバージョンは 5.4.6 です。ははは、環境をデプロイしたのは誰ですか~、これは詐欺です。 php -v

元の

をバックアップし、/usr/bin/php をコピーして上書きしてみました。/usr/local/bin/php を使用した後、バージョンは一貫しており、エラーは報告されませんでした。php -v を再度実行しました。すべてが解決したことがわかりました。問題はもう解決しました。 php protoc-php.php -n --psr dmp.proto

長い間苦労した結果、バージョンの問題であることが判明しました。

まとめ

もっと考えて、別の視点から考えてみましょう。

仕事は完璧にし、子孫に変な問題を残さないようにしなければなりません←_←。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート