我的CakePHP 3应用程序在我的本地服务器上正常运行.但是当我在Heroku上安装它时,我不断收到以下错误:
Error: The application is trying to load a file from the DebugKit plugin.
Make sure your plugin DebugKit is in the /app/plugins/ directory and was loaded.
我很困惑,因为我已经做了composer install,我看到了debug_kit,vendor/cakephp/debug_kit但错误似乎是在另一个插件目录中查找.
为什么会这样?
更新:我跑了composer install --verbose,我看到以下错误:
$ composer install --verbose
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Analyzed 91 packages to resolve dependencies
Analyzed 165 rules to resolve dependencies
Nothing to install or update
Generating autoload files
post-autoload-dump:Cake\Composer\Installer\PluginInstaller :: postAutoloadDump …
我在本地运行或测试代码时没有看到任何错误.我的phpunit测试套件通过:
Time: 11.69 seconds, Memory: 43.50Mb
OK, but incomplete, skipped, or risky tests!
Tests: 149, Assertions: 281, Incomplete: 13.
Run Code Online (Sandbox Code Playgroud)
但是当我推送完全相同的代码并且CircleCI运行完全相同的测试命令时,它会因致命错误而失败:
.PHP Fatal error: Class 'App\Domain\API\Request\Soap\Json\AbstractJson' not found in /home/ubuntu/TransitScreen/src/Domain/Api/Request/Soap/Json/NJTransit.php on line 10 php ./vendor/bin/phpunit --no-coverage --testsuite=unit returned exit code 255
Run Code Online (Sandbox Code Playgroud)
这是我的circle.yml:
test:
override:
- php ./vendor/bin/phpunit --no-coverage --testsuite=unit
machine:
php:
version: 5.6.5
environment:
APP_ENV: circleci
Run Code Online (Sandbox Code Playgroud)
它引用的文件以:
<?php
namespace App\Domain\API\Request\Soap\Json;
use App\Domain\Api\Request\InputApiDataRequest;
use App\Domain\Api\Request\Soap\AsyncSoapClient;
use Assert\Assertion;
class NJTransit extends AbstractJson
{
Run Code Online (Sandbox Code Playgroud)
起初我以为也许CircleCi运行的是没有命名空间的旧版PHP,但即使我将其设置为使用PHP v5.6.5,也会发生同样的错误.我甚至尝试将数据库转储添加到测试序列中.
对我来说,它甚至可以在错误发生之前运行几十个测试.所以我很确定它不是CircleCI上严重错误配置的东西.
有关为什么相同代码在两种环境中表现如此不同的任何建议?
更新1:我发现这个问题听起来非常相似但到目前为止覆盖了composer命令还没有解决问题. Laravel - …
我的CakePHP v3.x应用程序在我的本地Vagrant环境中运行良好,但是当我部署到Heroku时,我收到的所有javascript文件都有403个错误 /webroot/vendor/...
加载该目录之外的CSS和javascript文件.
https://example.com/js/i_load_fine.js
https://example.com/vendor/i_cause_403_error.js
Run Code Online (Sandbox Code Playgroud)
/ Procfile
web: vendor/bin/heroku-php-apache2
Run Code Online (Sandbox Code Playgroud)
这个问题听起来很相似,但我查了一下.htaccess已经有了推荐的RewriteCond:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud) 在CakePHP的早期版本中,您可以暂时改变关联,Table::bindModel('SomeModel');但我无法弄清楚如何在v3中执行此操作.
我想暂时禁用在Table类中定义的hasMany关联,因为当我运行在该表存在之前编写的较旧迁移时,它会导致错误.我不完全理解迁移问题,但当我在Table类中注释掉关联时它会立即消失.
class AgenciesTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->table('agencies');
$this->displayField('full_name');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->hasMany('Routes');
Run Code Online (Sandbox Code Playgroud)
我在用着@storybook/vue": "^6.5.10"。<style>我的组件由每个 .vue 文件底部的块设置样式。还有一些由 Rails webpacker 编译的全局 CSS (Sass) 文件。
为了重现我的故事中的全局 CSS 文件,我编写了装饰器(下面的示例)来重新创建各种 CSS 上下文。问题是我在一个装饰器中加载的 CSS 正在应用于我的其他组件/故事,我不明白为什么!
我的简化装饰器:
// THESE STYLES ARE SHOWING UP IN STORIES THAT DO NOT USE THIS DECORATOR!
import '!style-loader!css-loader!sass-loader!../../app/javascript/styles/site.sass';
const sitePackDecorator = (story) => {
// other irrelevant stuff
return {
components: { story },
template: '<story />'
}
}
;
export {sitePackDecorator}
Run Code Online (Sandbox Code Playgroud)
然后在我的故事文件中,我将其应用在组件级别,如下所示:
import MyComponent from '../app/javascript/src/site/components/assets/MyComponent'
import { sitePackDecorator } from './utilities/sitePackDecorator';
export default {
title: 'My Component',
component: …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个包含多个内部页面的简单应用程序.从#page2我想返回#page1AND重新加载它,以便javascript生成的内容将刷新.
<body>
<div id="page1" data-role="page">
<script type="text/javascript">
//Javascript spits out something new every time
</script>
</div>
<div id="page2" data-role="page">
<a id="page1button" href="page1" data-role="button">go to page1</a>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我可以使这项工作的唯一方法是通过增加rel="external"对#page1button.内容刷新,但有一个突然的页面重新加载不性感.有没有办法实现相同的结果,但仍然使用jqm的过渡?
我知道这是一个很受欢迎的问题,我已经做了很多研究,包括关于更改页面的jqm文档,但我尝试过的任何内容似乎都没有用.$.mobile.changePage()似乎有一个选择:reloadPage:true声称完全符合我的需要,但它不起作用.我甚至试过$.mobile.loadPage()之前.changePage(),仍然没有运气.救命!
我很确定这不是一个缓存问题,因为这是我的页面元素的样子,并且每当我返回页面时它仍然显示相同的*$#%&ing事物:
<div id="page2" data-role="page" data-cache="never" data-dom-cache="false"> ...
Run Code Online (Sandbox Code Playgroud)
我认为javascript块只在html页面加载时被调用一次,而不是每次我使用jqm返回到div.也许解决这个问题的方法是找出一种方法来强制该代码块再次运行.有任何想法吗?
好消息:我找到了解决这个问题的页面:http://jquerymobile.com/test/docs/pages/page-scripting.html
坏消息:它声称会起作用......
$( document ).delegate("#page1", "pageinit", function() {
alert('RE-RUN JAVASCRIPT');
});
......不!我把这个函数放在我的html文件的头部,它只运行一次.
仍然在努力解决这个问题.我在这里放了一些代码:http://dl.dropbox.com/u/28286159/index.html
为了简单起见,我只做了两页,其中一页包含<script>打印出来的内容: …
我正在写一个基本的插件.这是我的代码:
$new_user = get_userdata($user_id); //$user_id is passed as a parameter
$first_name1 = $new_user->user_firstname;
$last_name1 = $new_user->user_lastname;
echo "<" . $first_name1 . $last_name1 . ">";
//returns: <>
$first_name2 = $new_user-first_name;
$last_name2 = $new_user->last_name;
echo "<" . $first_name2 . $last_name2 . ">";
//returns: <>
Run Code Online (Sandbox Code Playgroud)
根据手抄本,这应该有效,但当我回声$first_name或$last_name他们是空的.奇怪的是,这确实有效:
$id = $new_user->ID;
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
更新:
我var_dump编辑 $new_user,那些属性不在那里!这是因为我在/ mu-plugins目录中的插件中调用它吗?这些属性会在以后添加吗?
object(WP_User)#334 (7) { ["data"]=> object(stdClass)#330 (10) { ["ID"]=> string(3) "758" ["user_login"]=> string(7) "emerson" ["user_pass"]=> string(34) "$P$BB2PuvRbyGUSVZR1M8FLSujPvMO2MW0" ["user_nicename"]=> string(7) …Run Code Online (Sandbox Code Playgroud) 在我的Wordpress网站上创建新用户时,我经常需要"做事".我知道我唯一可以依靠的动作钩子是user_register.
问题是我认为它是在用户创建过程中相对较早地触发的,因此通常会有用户信息不可用或其他插件在调用函数后进行更改.
我已经研究但没有运气,什么资源解释了WordPress创建用户的方式以及哪些钩子何时触发?
我正在使用select2 jquery插件来重新格式化我的长选项.一切都按预期工作,除非我提交表单时将id值保存为值,而不是值(在本例中lang).我无法弄清楚我做错了什么.
这是脚本的样子:
var langs=[{id:0,lang:'English'},
{id:1,lang:'Afrikaans'},
{id:2,lang:'Albanian'},
{id:3,lang:'Zulu'}];
function format(item) { return item.lang; };
$("#field_4").select2({
placeholder: "Select your language",
data:{ results: langs, text: 'lang' },
formatSelection: format,
formatResult: format
});
Run Code Online (Sandbox Code Playgroud)
这是标记:
<input id="field_4" name="field_4" type="text" class="regular-text " value="3" />
Run Code Online (Sandbox Code Playgroud)
当我在控制台中记录返回值时,我看到:
{Object}
O: Object
id: "1"
text: "Afrikaans"
Run Code Online (Sandbox Code Playgroud)
更新:
我在这方面取得了一些进展.如果我将以下内容添加到构造函数对象(对于select2),我可以保存正确的值(而不是id).但是,当我添加到<select>使用AJAX获取选项的s时,这不起作用.
id : function(object) {
return object.lang;
}
Run Code Online (Sandbox Code Playgroud) 我在OSX 10.8.2上,我正在运行git git v1.7.4.4
我刚刚在远程服务器上安装了git,它的版本是1.11.x. 我想运行相同版本的软件,但我无法弄清楚如何更新我的笔记本电脑上的git.
我尝试按照此处列出的步骤进行操作,该步骤指示下载git-OSX-installer,运行安装(运行顺利)然后执行:
$ sudo mkdir -p /usr/local/bin
$ sudo ln -s /usr/local/git/bin/git /usr/local/bin/git
Run Code Online (Sandbox Code Playgroud)
但在此之后我做了git --version,它仍然是1.7.4.4.我刚刚重新安装了相同的版本吗?或者我在其他地方安装了新版本?
我一直在阅读类似的问题,我认为问题是OSX附带了一个旧版本的git安装在不同的位置,然后git-osx-installer或mac端口将放置它.但我不确定如何纠正这个问题.提前感谢您的建议.
更新:
which git 返回:/ usr/bin/git
echo $PATH 返回:/opt/local/bin:/opt/local/sbin:/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3- P194 @全球/斌:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:在/ usr /本地/ RVM /斌:在/ usr/bin中:/ bin中:/ usr/sbin目录:/ sbin目录:在/ usr/local/bin目录:在/ usr /本地/ git的/ bin中中:/ opt/SM /箱中:/ opt/SM /包装/活动/箱中:/ opt/SM /包装/活动/ sbin目录
UPDATE2:
ESL ~/Downloads$ export PATH=/usr/local/bin:$PATH
ESL ~/Downloads$ which git
/usr/local/bin/git
ESL ~/Downloads$
ESL ~/Downloads$ git --version
git version 1.8.1.3
Run Code Online (Sandbox Code Playgroud)
看来我在本地安装了较新的git版本.那么我应该添加export PATH=/usr/local/bin:$PATH到我的.bash_profile中吗?是否安装了两个版本的git是一个问题? …