【问题标题】:Cannot start fpm using phpbrew on Ubuntu无法在 Ubuntu 上使用 phpbrew 启动 fpm
【发布时间】:2016-03-10 16:07:16
【问题描述】:

我已经安装了 phpbrew 及其依赖项,但是我无法使用所述命令测试 fpm:

phpbrew switch 5.4.38
sudo phpbrew fpm start
Did you mean 'app'? [Y/n] n
Command fpm not found. available commands are: help, zsh, bash, meta, compile, archive, github:build-topics, app, init, known, install, list, use, switch, each, config, info, env, extension, variants, path, cd, download, clean, update, ctags, list-ini, self-update, remove, purge, off, switch-off
Command: command not found

显然我在某个地方出错了,但找不到它不会启动的原因。我可以确认它在那里

cd ~/.phpbrew/php/php-5.4.38/sbin
ls
php-fpm

安装命令:

phpbrew install 5.4.38 +fpm +mysql;

信息:

版本 PHP-5.4.38

常量 PHP 前缀:/home/datamechanics/.phpbrew/php/php-5.4.38 PHP 二进制文件:/home/datamechanics/.phpbrew/php/php-5.4.38/bin/php PHP 默认包含路径:.: PHP 包含路径:.:

一般信息

phpinfo()
PHP Version => 5.4.38

System => Linux dmdell02 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64
Build Date => Mar 10 2016 15:29:28
Configure Command =>  './configure'  '--prefix=/home/datamechanics/.phpbrew/php/php-5.4.38' '--with-config-file-path=/home/datamechanics/.phpbrew/php/php-5.4.38/etc' '--with-config-file-scan-dir=/home/datamechanics/.phpbrew/php/php-5.4.38/var/db' '--disable-all' '--enable-phar' '--enable-session' '--enable-short-tags' '--enable-tokenizer' '--with-pcre-regex' '--with-zlib=/usr' '--with-libdir=lib/x86_64-linux-gnu' '--enable-fpm' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--enable-dom' '--enable-libxml' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter' '--with-xsl' '--with-libxml-dir=/usr'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /home/datamechanics/.phpbrew/php/php-5.4.38/etc
Loaded Configuration File => /home/datamechanics/.phpbrew/php/php-5.4.38/etc/php.ini
Scan this dir for additional .ini files => /home/datamechanics/.phpbrew/php/php-5.4.38/var/db
Additional .ini files parsed => (none)
PHP API => 20100412
PHP Extension => 20100525
Zend Extension => 220100525
Zend Extension Build => API220100525,NTS
PHP Extension Build => API20100525,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => disabled
Zend Memory Manager => enabled
Zend Multibyte Support => disabled
IPv6 Support => enabled
DTrace Support => disabled

Registered PHP Streams => compress.zlib, php, file, glob, data, http, ftp, phar
Registered Stream Socket Transports => tcp, udp, unix, udg
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Extensions
Core, date, ereg, libxml, pcre, zlib, dom, SPL, session, standard, Reflection, mysqlnd, SimpleXML, Phar, mysqli, tokenizer, xml, xmlreader, xmlwriter, xsl, mysql

Database Extensions
mysqlnd
mysqli
mysql

【问题讨论】:

  • 这可能是因为sudo 改变了你的PATH 环境。你试过用sudo -E 运行它吗?
  • 感谢 ES - 您能否进一步澄清这一点,因为这指向了可能的答案,只是在用户似乎工作正常时运行 phpbrew 命令(除了 9000 in use 错误,但这只是配置) .我安装为 sudo 为什么会出现这个问题?
  • @Evgeny 哦 - 我将 phpbrew 安装为 sudo 但不是 php 版本 phpbrew install 5.4.38 +fpm +mysql
  • 单独回答。没有足够的符号作为评论留下

标签: php linux ubuntu nginx


【解决方案1】:

如果您使用 sudo 安装了 phpbrew iteslf,那将无济于事。 phpbrew 到处都依赖getPhpbrewHome 函数。

除非您使用PHPBREW_HOME=/blah phpbrew ... 明确定义 PHPBREW_HOME,否则它将使用您的 HOME 环境变量来生成安装/执行路径。但是运行 sudo 会覆盖 HOME,除非你用 -E 告诉它保留环境:env |grep HOME => /home/vagrant, sudo env |grep HOME => HOME=/root, sudo -E env |grep HOME => HOME=/home/vagrant

换句话说,当你以普通用户身份运行它时,它会在/home/datamechanics/.phpbrew/ 中搜索 php 二进制文件,如果你使用 sudo 运行它,它会在 /home/root/.phpbrew/ 中搜索 php 二进制文件

您很可能有 3 个选项来解决您的问题:

  1. 使用 sudo sudo phpbrew install 5.4.38 +fpm +mysql 安装 php
  2. 用您当前的用户运行phpbrew fpm
  3. 在使用 sudo sudo PHPBREW_HOME=/home/datamechanics/.phpbrew phpbrew fpm start 运行 PHPBREW_HOME 时显式设置它

【讨论】:

  • 我已经开始了你的选项 1 路线。您能否建议使用 sudo 安装 nginx 时,这些答案中的哪一个最适合 - 这是我正在整理的清单,以便我以后可以重复docs.google.com/spreadsheets/d/…
  • @tim-higham 这取决于您要实现的目标。如果您需要针对不同用户的多个 php 版本(例如,其中一些具有需要旧版本的遗留项目),那么您需要使用第二种方法。如果您安装的版本不在您的发行版的软件包中,但如果每个用户都有相同的版本,那是另一种情况,您应该采用第一条路径。第三个非常具体,我无法说出它的典型用例。
  • 感谢您的回答和进一步的 cmets。这里主要需要的结果是在 linux 上创建一个单用户网络服务器,它应该运行最新的 php,但也能够运行旧的 php,例如旧的 mysql 身份验证等已弃用的功能
【解决方案2】:

尝试使用 OSX 作为开发服务器完成所有这些工作。

现在使用 PHPStorm 和纯 VirtualBox Ubuntu 服务器安装。个人 PHPStorm 及其功能的价格是惊人的。还有社区支持。

尝试过 Vagrant,但它的垃圾以及它支持 DNS 和端口转发的事实并不是远程主机的正确表示 - 我们希望尽可能多地在建模服务器或真实服务器上进行测试?

因此答案是查看 Windows 和 OSX 都无法提供行业 webserver 配置,并安装一个以 Linux 作为服务器的虚拟机。

我现在使用 PHPStorm 在与 VM 的共享目录上进行编辑,使用 Chrome 中的零配置工具书签来调试 PHP。

这正在变成一个完美的 OSX 笔记本电脑上的开发设置(我的主要目标),但可以在任何地方使用,因为所有基于 GIT 的。

很高兴提供提示,但认为这个问题由我回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2017-07-08
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多