linux重大bug,不兼容各个框架的 builder 和 命令行功能

奋斗2020招长期合作

在服务器上执行以下命令:

[root@server wwwroot]# php ./thinkCould not open input file: ./think

会提示无法打开指定脚本文件

[root@server wwwroot]# php thinkCould not open input file: think

当前目录下think文件是实打实存在的

同样的yii框架下的命令行builder功能,也是提示无法打开脚本文件

已经找到原因,但是不知道怎么修复。

原因是 php命令的[工作目录]不是[终端所访问的当前目录]

php 参数需要提供完整文件路径,但是!但是!一旦提供完整路径,php脚本文件内使用include和require函数引用的文件就会出现各种无法加载 因为绝大多数框架为了通用性和可移植性,使用的都是相对路径。

而自己在终端安装的php(包含源码编译和包管理器以及其他第三方一键环境) 当使用命令行方式执行php脚本文件时工作目录是当前目录。

不晓得是小皮刻意如此还是bug,按道理应该默认当前目录为工作目录的,zip cp mv 等等命令都是默认当前目录。

原帖:https://www.xp.cn/wenda/29073.html

原帖猪哥给予了回复,但是可能猪哥理解错了,我跟楼回复好像社区没有强消息提醒功能所以重开一贴。

猪哥可以通过以下方式重现这bug:在安装linux版小皮的主机里 新建站点或者干脆在root目录下新建一个php文件,一句 phpinfo();保存为任意文件名, 然后命令行 执行 php thisfile,会提示无法打开这个文件 然后 php -i 就会提示pwd是php的二进制文件所在目录,也就是说 php没有切换到当前目录,而自己编译或者包管理器安装以及其他的对标产品没有这个现象或者说bug

问题比较着急?请联系QQ:760483
  • 老江
  • 老江    2020-05-09 18:09:415楼

    的确有这问题,因为小皮的php其实是在docker里的。甚至这个php执行不了docker里没有的路径的文件。比如你root用户目录下的文件,就算你用完整文件路径都会提示 Could not open input file

    +添加回复

  • 回复
  • 三三@xp.cn
  • 三三@xp.cn    2020-05-01 10:44:383楼

    请先执行  docker exec -it centos_env $SHELL,进入docker,然后再执行框架命令。

    +添加回复

  • 回复
  • 奋斗2020招长期合作
  • 奋斗2020招长期合作    2020-05-01 09:45:352楼

    使用包管理器安装php 正常执行 2020-05-01 09-38-43 的屏幕截图.png使用小皮:

    2020-05-01 09-41-44 的屏幕截图.png

    绝对绝对不是 执行目录 设置问题,看php的源码,pwd 指向的应该是 执行php命令时,终端的当前目录。所以应该是小皮存在的bug

    +添加回复

  • 回复
  • 奋斗2020招长期合作
  • 奋斗2020招长期合作    2020-05-01 09:37:051楼

    代码粘贴上来默认没有折行,跟帖说明下

    [root@server wwwroot]# php ./think

    Could not open input file: ./think

    [root@server wwwroot]# php think

    Could not open input file: think

    +添加回复

  • 回复