使用ZendFramework设置环境(生产/暂存/开发)的标准做法是在Apache配置(或.htaccess)中使用SetEnv来设置APPLICATION_ENV。这显然适用于Web请求,但是运行命令行脚本(仍然是应用程序的一部分,使用相同的Bootstrap,并依赖于正确的APPLICATION_ENV)呢?有什么最佳做法吗?现在我只是将一个.environment.php文件放到我的cli目录中——如果它存在,它就会被包含(类似于.htaccess我猜测),并且可以用来设置环境。 最佳答案 从终端对于(linux)仅命令行用
PHPUnit在运行特定测试之前运行测试类的setUp()方法。我为测试类中的每个测试加载特定于测试的装置,并且不希望必须显式地这样做。理想情况下,我希望在setUp()方法中自动处理这个问题。如果setUp()方法使测试类名称和测试方法名称可用,则可以完成此操作。我在setUp()方法中是否可以获得即将运行的测试类和方法的名称? 最佳答案 实现此目的的最简单方法应该是在setUp()中调用$this->getName()。getName());}publicfunctiontestMethod(){$this->assertEqu
我在我的机器上使用Ubuntu14.04。我在文档根目录中安装了composer和laravel即/var/www我还授予了-R777文件夹laravel的权限,该文件夹存在于目录/var/www然后我使用cd/var/www/laravel进入目录laravel并运行以下命令phpartisan我看到了那里有所有可用的命令。然后我输入phpartisankey:generate得到了错误[ErrorException]file_get_contents(/var/www/laravel/.env):failedtoopenstream:Nosuchfileordirectory在这里
我有一个包含我的数据库连接详细信息的.env文件,这对于Laravel5来说是正常的。我想覆盖这些以进行测试,我可以在phpunit.xml。然而,这样做似乎违背了.env的理念,即不提交环境配置,尤其是密码。是否有可能有类似.env.testing的东西并告诉phpunit.xml从中读取? 最佳答案 您可以覆盖在您的TestCase文件中使用的.env文件,在该文件中启动框架进行测试。更具体:测试/TestCase.php/***Createstheapplication.**@return\Illuminate\Foundat
我看到在他们的默认安装中,他们的index.php有这个:define('ENVIRONMENT',isset($_SERVER['CI_ENV'])?$_SERVER['CI_ENV']:'development');为什么CI_ENV已经设置在$_SERVER数组中? 最佳答案 正如奥利弗所描述的;它是多种环境的特殊用例。在获取代码之前通过.htaccess拆分开发、测试和生产。要配置它:开发(本地主机)SetEnvCI_ENVdevelopment测试(您的本地服务器)SetEnvCI_ENVtesting生产(远程服务器)S
我正在使用WAMP。我想在命令提示符下使用php。这个在PATH环境变量中的条目是什么? 最佳答案 您需要将PHP目录添加到您的路径中。在命令行上(例如在批处理文件中),它看起来像这样:SETPATH=%PATH%;C:\your\wamp\path\php如果有疑问,它是包含php.exe的目录。您也可以在Windows的控制面板中预先设置路径。参见here例如,如何在Windows7中执行此操作。请注意,如果您从任意目录调用PHP可执行文件,该目录将是工作目录。您可能需要调整脚本,以便它们使用正确的目录进行文件操作(如果有的话)
当我看到要从命令行运行的PHP时,通常会在文件顶部有这样一行#!/usr/bin/envphp。..#!/usr/bin/envphp我想知道这是否仅适用于文件在Linux/Unix系统上运行时的情况,还是也需要在Windows上运行? 最佳答案 shebang行是自动检测脚本类型所必需的。它支持这种用法:[pfisher~]$chmod+xrun-me.php[pfisher~]$run-me.php如果将文件名作为参数传递给php解释器,则不需要该行,如下所示:[pfisher~]$phprun-me.php编辑:将"hashb
方法setUp()和tearDown()在每次测试之前和之后被调用。但实际上,是否有关于我为什么需要这个的真实示例?检查其他人的测试,我总是看到类似的东西:publicfunctionsetUp(){$this->testsub=newTestSubject();}publicfunctiontearDown(){unset($this->testsub);}publicfunctiontestSomething(){$this->assertSame('foo',$this->testsub->getFoo());}当然,这种方式和“旧的”局部变量方式几乎没有区别。
在laravel4中我们有:$env=$app->detectEnvironment(array('local'=>array('homestead')));默认。但是在laravel5中它变成了:$env=$app->detectEnvironment(function(){returngetenv('APP_ENV')?:'production';});此外,他们已经排除了.gitignore中的.env.*行,现在它有:.env并添加了文件.env.example:APP_ENV=localAPP_KEY=SomeRandomStringDB_USERNAME=homestead
我正在尝试为我的应用启用调试,但我似乎没有任何反馈。环境设置为本地(在.env文件中),如果我运行phpartisanenv我明白了Currentapplicationenvironment:local我的本地环境的调试配置设置为truereturn['debug'=>true,另外,如果我在我的主配置文件(config文件夹中的app.php)中设置debug=true我仍然有反馈说代码中有错误。如果代码有错误,我只有一个空页面(如debug=false)我错过了什么? 最佳答案 我已经通过chmod-R777storage/