亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

php cli配置文件問題分析

 更新時間:2015年10月15日 13:42:05   投稿:mrr  
這篇文章主要介紹了php cli配置文件問題分析,需要的朋友可以參考下

引言

今天在教別人使用protobuf的時候,無意中發(fā)現了一個php cli模式下的詭異問題,費了老半天的找到解決方法了,這里拿出來分享下。

問題描述

我們這邊最先引入了protobuf協(xié)議,使用的是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

后面兩個是必須的,生成pb協(xié)議實現類庫文件時會用到,前面兩個是一個簡單的例子,使用也很簡單,就像下面這樣。

php protoc-php.php -n --psr dmp.proto //-n是使用命名空間,--psr是使用psr-4標準等同事用的時候發(fā)現會報錯,

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問題更嚴重了,本來裝好的擴展程序加載不成功,經過一番排查發(fā)下有下面這么一個問題:

$yanruitao: php -i | grep 'php.ini'
$yanruitao: sudo php -i | grep 'php.ini'

兩種用戶加載的不是同一個配置文件,普通用戶加載的是/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

這讓我摸不著頭腦了。

時間過去了好久,沒有發(fā)現任何突破,卻發(fā)現了一個備用的解決這個問題的方案,修改/data/php_proto/文件夾權限為0775,其他普通用戶就可以直接使用了,不用加sudo(這個是我的錯,忘記修改文件夾權限了,這也讓我發(fā)現了這個詭異的問題)

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可執(zhí)行文件是不一致的

root => /usr/bin/php
非root => /usr/local/bin/php

嘗試著對這兩個文件使用了php -v,結果下了我一跳,root用戶的版本是5.3.3,非root用戶是5.4.6,呵呵,我就呵呵了,誰部署的環(huán)境~,坑人啊。

嘗試著將原有/usr/bin/php備份后,復制/usr/local/bin/php過來覆蓋掉,在使用php -v發(fā)現版本一致了,也不報錯了,再次去執(zhí)行php protoc-php.php -n --psr dmp.proto,發(fā)現all is well,至此問題解決。

糾結了半天,結果就是版本的問題。

相關文章

  • Thinkphp 框架配置操作之配置加載與讀取配置實例分析

    Thinkphp 框架配置操作之配置加載與讀取配置實例分析

    這篇文章主要介紹了Thinkphp 框架配置操作之配置加載與讀取配置,結合實例形式分析了Thinkphp 框架配置操作中配置加載原理、操作技巧與相關注意事項,需要的朋友可以參考下
    2020-05-05
  • PHP fopen中文文件名亂碼問題解決方案

    PHP fopen中文文件名亂碼問題解決方案

    這篇文章主要介紹了PHP fopen中文文件名亂碼問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • php二維數組排序詳解

    php二維數組排序詳解

    二維數組排序排序在php中也提供了一個函數array_multisort就可以直接排序了,下面我來介紹除了全使用array_multisort 對數組進行排序我們還寫了一些自定二維數組排序方法
    2013-11-11
  • Laravel中數據遷移與數據填充的詳細步驟

    Laravel中數據遷移與數據填充的詳細步驟

    這篇文章主要給大家介紹了關于Laravel中數據遷移與數據填充的相關資料,文中通過示例代碼給大家詳細介紹了實現的步驟,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧。
    2017-12-12
  • 如何利用http協(xié)議發(fā)布博客園博文評論

    如何利用http協(xié)議發(fā)布博客園博文評論

    這篇文章主要介紹了利用http協(xié)議發(fā)布博客園博文評論的方法,首先,大家要明確給博文提交評論的實質就是通過http協(xié)議服務器發(fā)送一個post請求,需要的朋友可以參考下
    2015-08-08
  • PHP執(zhí)行l(wèi)inux命令常用函數匯總

    PHP執(zhí)行l(wèi)inux命令常用函數匯總

    一般情況下,很少會用php去執(zhí)行l(wèi)inux命令,不過特殊情況下,你也許會用到這些函數。以前我知道有二個函數可以執(zhí)行l(wèi)inux命令,一個是exec,一個是shell_exec,通過本文給大家介紹PHP執(zhí)行l(wèi)inux命令常用函數匯總,需要的朋友參考下
    2016-02-02
  • PHP 翻頁 實例代碼

    PHP 翻頁 實例代碼

    PHP 翻頁 實例代碼,大家可以參考下。
    2009-08-08
  • PHP中使用socket方式GET、POST數據實例

    PHP中使用socket方式GET、POST數據實例

    這篇文章主要介紹了PHP中使用socket方式GET、POST數據實例,本文分別給出GET方式和POST方式的代碼實例,需要的朋友可以參考下
    2015-04-04
  • PHP實現AJAX動態(tài)網頁及相關函數詳解

    PHP實現AJAX動態(tài)網頁及相關函數詳解

    ajax其實是利用javascript向服務器請求數據,然后局部修改頁面,下面這篇文章主要給大家介紹了關于PHP實現AJAX動態(tài)網頁及相關函數的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • php 生成靜態(tài)頁面的辦法與實現代碼詳細版

    php 生成靜態(tài)頁面的辦法與實現代碼詳細版

    首先說原理。查了那么多資料,發(fā)現不管用什么方法,原理都是一樣的。就是用程序讀取相應的數據來替換模版中的變量,然后生成靜態(tài)頁。
    2010-02-02

最新評論