后面两个是必须的,生成pb协议实现类库文件时会用到,前面两个是一个简单的例子,使用也很简单,就像下面这样。 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
两种用户加载的不是同一个配置文件,普通用户加载的是/usr/local/php/lib/php.ini,而root用户加载的是/etc/php.ini这个文件,我看了下这两个文件内容不一致,哈哈,好开心,赶紧把先把/etc/php.ini备份,/usr/local/php/lib/php.ini复制到/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 这让我摸不着头脑了。 时间过去了好久,没有发现任何突破,却发现了一个备用的解决这个问题的方案,修改/data/php_proto/文件夹权限为0775,其他普通用户就可以直接使用了,不用加sudo(这个是我的错,忘记修改文件夹权限了,这也让我发现了这个诡异的问题) chmod -R 0775 /data/php_proto 看了报的这些错误,大部分都是扩展的问题,有的是扩展加载不成功,有的是扩展不存在,我就纳闷了,为什么普通用户可以,root用户就不可以。 看到root用户php -i的时候,配置文件的地方跟非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