php cliプロファイルの問題
9099 ワード
引用する
今日protobufの使用を他の人に教えたとき、何気なくphp cliモードの奇妙な問題を見つけて、長い間解決方法を見つけて、ここで共有しました.
問題の説明
ここで最初にprotobufプロトコルを導入しました.allegro/php-protobufという拡張インストールを使用しています.ここ数日他の同僚もこれを使います.そこでprotobufがphpクラスライブラリファイルを生成した部分を共通の場所
後の2つは必須で、pbプロトコル実装クラスライブラリファイルを生成する際に使用されます.前の2つは簡単な例で、使用も簡単です.以下のように.
同僚が使っている間に間違いを報告することに気づきました.
同僚が私に聞いたとき、私は直接
2つのユーザーがロードしたのは同じプロファイルではなく、普通のユーザーがロードしたのは
これは私に頭がつかめなくなった.
時間が過ぎて久しく、何の突破も発見されなかったが、この問題を解決するための代替案を発見した.
新聞のこれらのエラーを見て、大部分は拡張の問題で、あるのは拡張ロードが成功しないことで、あるのは拡張が存在しないことで、私はどうして普通のユーザーができるのか、rootユーザーはできないのかと悩んだ.
rootユーザー
ネーミングロードは同じプロファイルですが、どのようにしてロードした後の内容が違いますか?長いこと探して、新聞の間違いの中にこれと関係がある部分があることを知っていましたが、これはどこで修正して長い間探しても見つかりませんでした.
rootユーザと非rootユーザが使用するphp実行可能ファイルが一致しないことをふと思い出す
この2つのファイルに
従来の
長い間悩んでいたが、結局バージョンの問題だった.
まとめ
多く考えて、多く角度を変えて考えます.后辈に変な问题を残さないでください←_←.
今日protobufの使用を他の人に教えたとき、何気なくphp cliモードの奇妙な問題を見つけて、長い間解決方法を見つけて、ここで共有しました.
問題の説明
ここで最初にprotobufプロトコルを導入しました.allegro/php-protobufという拡張インストールを使用しています.ここ数日他の同僚もこれを使います.そこでprotobufがphpクラスライブラリファイルを生成した部分を共通の場所
/data/php_proto/
フォルダの下に置きました.drwsrwxr-x 2 yanruitao users 4096 10 14 17:05 Dmp
-rwxrwxr-x 1 yanruitao users 472 10 10 17:59 dmp.proto
drwsrwxr-x 2 yanruitao users 4096 10 10 17:54 ProtobufCompiler
-rwxrwxr-x 1 yanruitao users 2969 3 9 2015 protoc-php.php
後の2つは必須で、pbプロトコル実装クラスライブラリファイルを生成する際に使用されます.前の2つは簡単な例で、使用も簡単です.以下のように.
php protoc-php.php -n --psr dmp.proto //-n ,--psr psr-4
同僚が使っている間に間違いを報告することに気づきました.
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
同僚が私に聞いたとき、私は直接
sudo
を加えればいいと言ったが、結果的にsudoの問題がさらに深刻になり、もともと組み込まれた拡張プログラムのロードが成功しなかったので、次のような質問があった.$yanruitao: php -i | grep 'php.ini'
$yanruitao: sudo php -i | grep 'php.ini'
2つのユーザーがロードしたのは同じプロファイルではなく、普通のユーザーがロードしたのは
/usr/local/php/lib/php.ini
で、rootユーザーがロードしたのは/etc/php.ini
というファイルです.多くのエラーが報告されました.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 0
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 0
PHP Warning: PHP Startup: test: Unable to initialize module
Module compiled with module API=20100525
PHP compiled with module API=20090626
These options need to match
in Unknown on line 0
Warning: PHP Startup: test: Unable to initialize module
Module compiled with module API=20100525
PHP compiled with module API=20090626
These options need to match
in Unknown on line 0
PHP 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 0
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 0
PHP 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 0
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 0
PHP 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 0
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 0
PHP 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 0
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 0
PHP 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 0
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 0
PHP 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 0
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 0
PHP 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 0
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 0
PHP 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 0
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 0
PHP 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 0
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 0
PHP 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 0
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 0
protoc-php.php requires protobuf extension installed to run
これは私に頭がつかめなくなった.
時間が過ぎて久しく、何の突破も発見されなかったが、この問題を解決するための代替案を発見した.
/etc/php.ini
フォルダの権限を変更するのは0775で、他の一般ユーザーは直接使用することができ、sudoを追加する必要はない(これは私のせいで、フォルダの権限を変更するのを忘れた.これも私にこの奇妙な問題を発見させた).chmod -R 0775 /data/php_proto
新聞のこれらのエラーを見て、大部分は拡張の問題で、あるのは拡張ロードが成功しないことで、あるのは拡張が存在しないことで、私はどうして普通のユーザーができるのか、rootユーザーはできないのかと悩んだ.
rootユーザー
/usr/local/php/lib/php.ini
を見たとき、プロファイルの場所がroot以外のユーザーと一致しない場所があります.// root
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
//root
Scan this dir for additional .ini files => /etc/php.d
Additional .ini files parsed => /etc/php.d/curl.ini,
......
ネーミングロードは同じプロファイルですが、どのようにしてロードした後の内容が違いますか?長いこと探して、新聞の間違いの中にこれと関係がある部分があることを知っていましたが、これはどこで修正して長い間探しても見つかりませんでした.
rootユーザと非rootユーザが使用するphp実行可能ファイルが一致しないことをふと思い出す
root => /usr/bin/php
root => /usr/local/bin/php
この2つのファイルに
/etc/php.ini
を使ってみたところ、私はジャンプしました.rootユーザーのバージョンは5.3.です.3,root以外のユーザは5.4である.6,ほほほ、私はほほほ、谁が配置する环境~、坑人.従来の
/data/php_proto/
のバックアップを試みた後、php -i
をコピーして上書きし、php -v
を使用してバージョンが一致したことを発見し、エラーも報告せず、再び/usr/bin/php
を実行し、all is wellを発見し、この問題を解決した.長い間悩んでいたが、結局バージョンの問題だった.
まとめ
多く考えて、多く角度を変えて考えます.后辈に変な问题を残さないでください←_←.