介绍 今天,当教别人使用protobuf,我
发现一个奇怪的问题,PHP CLI
模式。我花了很长时间才找到
解决办法。在这里,我将与你
分享。
问题描述
我们首先介绍了protobuf协议,使用快速的 / PHP protobuf
扩展安装。这些天,其他同事也需要使用这。所以我把protobuf部分生成的PHP类库
文件在公共场所 / / / php_proto
数据文件夹,其中包含这些内容。
drwsrwxr-x 2 yanruitao
用户409610个月17 DMP 14
- rwxrwxr-x 1 yanruitao用户47210个月10 dmp.proto 17时59分
drwsrwxr-x 2 yanruitao用户409610个月10 protobufcompiler 17:54
- rwxrwxr-x 1 yanruitao用户29693个月92015 protoc-php.php
后两者是必要的。当我们生成PB协议来实现类库文件时,我们将使用它们。前两个是一个简单的例子。使用起来也很简单。
PHP protoc-php.php N——PSR dmp.proto / / N是命名
空间的使用,——PSR是psr-4标准和其他同事在使用时发现是错的,
PHP警告:file_put_contents(pb_proto_dmp。PHP):打开失败:
权限被拒绝、否认309。
我的同事问我,当我说,再加上sudo,sudo加的问题更为严重,原本安装扩展
程序加载不成功,以下这样的问题经过大量排查:
yanruitao美元:我grep'php PHP INI的|
yanruitao美元:sudo -我grep'php PHP INI的|
两用户负荷不相同的
配置文件,一般用户负荷/ usr / / / lib
本地PHP / php.ini,和根用户加载的文件/ etc / php.ini,我把在文件的内容有两个一看就不一样了,呵呵,非常高兴,赶紧把 /等/的备份,
复制/ usr / / / lib PHP本地 / / /等的php.ini复制后,当我再使用吓了我一跳,有很多
错误:
PHP警告:PHP
启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 web_stub_cntl。所以/ usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 web_stub_cntl.so:未定义的符号:zend_new_interned_string在未知的0线
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 web_stub_cntl。所以/ usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 web_stub_cntl.so:未定义象征:zend_new_interned_string在未知的0线
PHP警告:PHP启动:测试:无法初始化模块
用模块api = 20100525编译的模块
用模块api = 20090626编译的PHP
这些
选项需要匹配。
未知的第0行
警告:PHP启动:测试:无法初始化模块
用模块api = 20100525编译的模块
用模块api = 20090626编译的PHP
这些选项需要匹配。
未知的第0行
PHP警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 protobuf。所以/ usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 protobuf.so:未定义的符号:zend_new_interned_string在未知的0线
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 protobuf。所以/ usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 protobuf.so:未定义象征:zend_new_interned_string在未知的0线
PHP警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 imagick。所以/ usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 imagick.so:未定义的符号:zend_new_interned_string在未知的0线
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 imagick。所以/ usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 imagick.so:未定义象征:zend_new_interned_string在未知的0线
PHP警告:PHP启动:无法加载动态库的 /数据/老板/ phpredis开发 /模块/ redis, / / / phpredis老板数据开发/模块/ redis.so: / / / phpredis老板数据开发 / / Redis模块所以,PHP 0。
警告:PHP启动:无法加载动态库的 /数据/老板/ phpredis开发 /模块/ redis, / / / phpredis老板数据开发/模块/ redis.so:未定义的定义,0启动:。
PHP警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525卷曲。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / /扩展no-debug-non-zts-20100525 / curl.so:文件:没有这样的文件或
目录在线0未知
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525卷曲。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 curl.so:文件:没有这样的文件或目录在线0未知
PHP警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 FileInfo。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / /扩展no-debug-non-zts-20100525 / fileinfo.so:文件:没有这样的文件或目录在线0未知
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 FileInfo。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 fileinfo.so:文件:没有这样的文件或目录在线0未知
PHP警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 GD。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / /扩展no-debug-non-zts-20100525 / gd.so:文件:没有这样的文件或目录在线0未知
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 GD。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 gd.so:文件:没有这样的文件或目录在线0未知
PHP警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 JSON。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / /扩展no-debug-non-zts-20100525 / json.so:文件:没有这样的文件或目录在线0未知
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 JSON。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 json.so:文件:没有这样的文件或目录在线0未知
PHP警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525药。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / /扩展no-debug-non-zts-20100525 / phar.so:文件:没有这样的文件或目录在线0未知
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525药。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 phar.so:文件:没有这样的文件或目录在线0未知
PHP警告:PHP启动:无法加载动态库的 /数据/老板/ phpredis开发 /模块/ redis, / / / phpredis老板数据开发/模块/ redis.so: / / / phpredis老板数据开发 / / Redis模块所以,PHP 0。
警告:PHP启动:无法加载动态库的 /数据/老板/ phpredis开发 /模块/ redis, / / / phpredis老板数据开发/模块/ redis.so:未定义的定义,0启动:。
PHP警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525拉链。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / /扩展no-debug-non-zts-20100525 / zip.so:文件:没有这样的文件或目录在线0未知
警告:PHP启动:无法加载动态库的 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525拉链。so'cannot打开共享对象 / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525 zip.so:文件:没有这样的文件或目录在线0未知
protoc-php.php protobuf扩展需要安装
运行 它让我失去了我的心。
在过去很长一段时间,没有发现任何突破,但发现这个问题的一个备用方案,
修改 / / / php_proto数据文件夹的权限为0775,普通用户可以直接使用,没有sudo(这是我的错,忘记更改文件夹的权限,我发现这个奇怪的问题)
chmod -R 0775 / / php_proto数据
阅读报纸的大部分错误
都是扩展。其中一些没有成功加载。有些扩展不存在。我想知道为什么普通用户可以是root用户。
当您看到root用户PHP I时,该文件的
位置与非root用户不一致:
/根
扫描此目录,以增加。Ini(文件=没有)
附加INI文件(解析=无)
根
扫描此目录以获取附加的INI文件。
额外的.ini文件解析= / / PHP等。D / curl.ini,
......
加载相同内容后,相同的配置文件是如何命名的
半天来,我知道报纸上的一些错误与此有关,但是在这个地方被改变了,
搜索了很长时间,没有被搜查过。
人们突然认为根用户和非root用户使用的PHP可
执行文件是不一致的。
根= > / usr /斌/ PHP
根= > / usr /局部/斌/ PHP
试着将这两个文件使用PHP - V,结果吓了我一跳,根用户的版本是5.3.3,非根用户5.4.6,哈哈,我哈哈,谁部署环境~,啊。
在试图复制原文/ usr /斌/ PHP和复制/ usr /局部/斌/ PHP来掩盖它,发现版本PHP V相一致,这并没有错。再次,我们执行PHP protoc-php.php N——PSR dmp.proto,发现都是,这是解决这个问题的办法。
半天,结果就是版本的问题。