【问题标题】:phalcon run cmd filephalcon运行cmd文件
【发布时间】:2014-06-14 12:07:21
【问题描述】:

我无法使用 cmd.exe (windows 7) 在 phalcon 应用程序内的任何 php 文件上运行 php 文件。

当我尝试运行命令时,输出是它没有找到类。

例如:我有一个包含以下代码的 php 文件

namespace Res\Helper
use Engine\Helper;

class MyClass extends Helper
{
   public function __construct()
   {}

   public function testme()
   {
      return 'WORKS';
   }
}

当我在 cmd php MyClass.php 中运行时,它说找不到类引擎!

【问题讨论】:

  • 我使用了 phalcon cli,现在已经加载了类,但问题是我无法启动 websocket 服务器。我运行 php -q MyClass.php 并注意打印没有错误,但服务器不会启动

标签: php phalcon


【解决方案1】:

因为您的命名空间引擎未正确注册。 Phalcon 的命名空间以 Phalcon 开头。

关于引擎,我唯一能想到的就是namespace Phalcon\Mvc\View\Engine\,但它没有Helper。您可能从其他地方获得此代码,然后是 Phalcon 文档。

所有可能的命名空间都可以在存根中查看:

顺便说一句,

开始使用 Linux 进行开发。我也使用 Windows 作为我的操作系统,但 Vagrant 或任何其他虚拟机始终提供 PHP 代码。

如果你愿意,试试我的 Vagrant 配置文件:

流浪文件:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Base Box
  # --------------------
  config.vm.box = "precise32"
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"

  # Connect to IP
  # --------------------
  config.vm.network :private_network, ip: "192.168.5.0"

  # Forward to Port
  # --------------------
  #config.vm.network :forwarded_port, guest: 80, host: 8080

  # Optional (Remove if desired)
  config.vm.provider :virtualbox do |v|
    # How much RAM to give the VM (in MB)
    # -----------------------------------
    v.customize ["modifyvm", :id, "--memory", "700"]

    # Uncomment the Bottom two lines to enable muli-core in the VM
    #v.customize ["modifyvm", :id, "--cpus", "2"]
    #v.customize ["modifyvm", :id, "--ioapic", "on"]
  end

  # Provisioning Script
  # --------------------
  config.vm.provision "shell", path: "init.sh"

  # Synced Folder
  # --------------------
  #config.vm.synced_folder "./", "/vagrant/", :mount_options => [ "dmode=777", "fmode=666" ]
  config.vm.synced_folder "./", "/var/www/", :mount_options => [ "dmode=775", "fmode=644" ], :owner => 'www-data', :group => 'www-data'

end

init.sh 文件:

#!/bin/bash
# Using Precise32 Ubuntu
# to use closest ubuntu mirror by geographic location
echo 'deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse' | cat - /etc/apt/sources.list > temp && mv temp /etc/apt/sources.list
echo 'deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse' | cat - /etc/apt/sources.list > temp && mv temp /etc/apt/sources.list
echo 'deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse' | cat - /etc/apt/sources.list > temp && mv temp /etc/apt/sources.list
echo 'deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse' | cat - /etc/apt/sources.list > temp && mv temp /etc/apt/sources.list

sudo apt-get update

#
# For PHP 5.5
#

sudo apt-get install -y python-software-properties
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update

#
# MySQL with root:<no password>
#
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install mysql-server

#
# PHP
#
sudo apt-get install -y php5 php5-dev apache2 libapache2-mod-php5 php5-mysql php5-curl php5-mcrypt php5-gd php5-imagick

#
# Redis
#
sudo apt-get install -y redis-server

#
# MongoDB
#
sudo apt-get install mongodb-clients mongodb-server

#
# Utilities
#
sudo apt-get install -y curl htop git-core gcc autoconf
sudo apt-get install -y libpcre3-dev

#
# Redis Configuration
# Allow us to Remote from Vagrant with Port
#
sudo cp /etc/redis/redis.conf /etc/redis/redis.bkup.conf
sudo sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis/redis.conf
sudo /etc/init.d/redis-server restart

#
# MySQL Configuration
# Allow us to Remote from Vagrant with Port
#
sudo cp /etc/mysql/my.cnf /etc/mysql/my.bkup.cnf
# Note: Since the MySQL bind-address has a tab character I comment out the end line
sudo sed -i 's/bind-address/bind-address = 0.0.0.0#/' /etc/mysql/my.cnf

#
# Grant All Priveleges to ROOT for remote access
#
mysql -u root -Bse "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;"
sudo service mysql restart



#
# Composer for PHP
#
sudo curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

#
# Apache VHost
#
cd ~
echo '<VirtualHost *:80>
        DocumentRoot /var/www/public
        SetEnv APPLICATION_ENV "development"
</VirtualHost>

<Directory "/var/www/public">
        Options Indexes Followsymlinks
        AllowOverride All
        Require all granted
</Directory>
ErrorLog /var/www/logs/error.log
' > vagrant.conf

sudo mv vagrant.conf /etc/apache2/sites-available
sudo a2enmod rewrite

#
# Install PhalconPHP
# Enable it
#
cd ~
git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install

echo "extension=phalcon.so" > phalcon.ini
sudo mv phalcon.ini /etc/php5/mods-available
sudo php5enmod phalcon
sudo php5enmod curl

#
# Install PhalconPHP DevTools
#
cd ~
echo '{"require": {"phalcon/devtools": "dev-master"}}' > composer.json
composer install
rm composer.json

sudo mkdir /opt/phalcon-tools
sudo mv ~/vendor/phalcon/devtools/* /opt/phalcon-tools
sudo ln -s /opt/phalcon-tools/phalcon.php /usr/bin/phalcon
sudo rm -rf ~vendor


#
# PHP.ini params edits
#
sudo echo "; ######### PHP.ini modifications from vagrant init.sh #######" >> /etc/php5/apache2/php.ini
sudo echo "error_reporting = E_ALL | E_STRICT" >> /etc/php5/apache2/php.ini
sudo echo "display_errors = On" >> /etc/php5/apache2/php.ini

#
# Reload apache
#
sudo a2ensite vagrant
sudo a2dissite 000-default
sudo service apache2 reload
sudo service apache2 restart
sudo service mongodb restart

#echo -e "----------------------------------------"
#echo -e "To create a Phalcon Project:\n"
#echo -e "----------------------------------------"
#echo -e "$ cd /var/www"
#echo -e "$ phalcon project projectname\n"
#echo -e
#echo -e "Then follow the README.md to copy/paste the VirtualHost!\n"

#echo -e "----------------------------------------"
#echo -e "Default Site: http://192.168.5.0"
#echo -e "----------------------------------------"

####### writable Volt directory
sudo mkdir /vagrant/cache/volt/
sudo chmod 777 /vagrant/cache/volt/

将这两个文件添加到某个目录并使用 Windows power shell 类型。在执行这些操作之前,您必须安装 vagrant 和 virtual box。

vagrant up --provision

它将安装 ubuntu box,添加 Phalcon、php、mongodb、sql 等。您网站的链接将是:192.168.5.0 您可以在主机文件(在 windows/linux/mac 上)中添加任何域以指向此 ip,您将能够使用普通域。

干杯!

【讨论】:

  • 我明白这一点,感谢您的提醒。我正在使用我的 VirtualBox 中的 linux。问题是,当我尝试使用 linux 启动服务器时,它无法启动。我已经安装了棘轮,当我在 Windows 上使用 cmd 运行它时,它可以工作,但是当我从 linux shell 运行相同的命令行时,它不会启动服务器,也不会显示任何错误消息。
  • 我已添加 vagrant 信息,因此您可以复制粘贴我的文件,您将能够在 Windows 上使用 linux,而没有任何痛点。我已经说过了,Engine\Helper 没有注册命名空间,它不是 phalcon 的一部分。如果有用,请采纳答案。
猜你喜欢
  • 2020-08-13
  • 2013-08-13
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
相关资源
最近更新 更多