- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
你们中的一些人可能认为这个问题已经被问了数百次,但我仍然没有找到我遇到的具体问题的答案。
我已经阅读了这些主题,但没有一个能回答我的问题:
https://github.com/bcit-ci/CodeIgniter/issues/1805
codeigniter upload not working on linux
Codeigniter web app is not working with the linux but here on windows is fine
Naming convention issues when using codeigniter in windows and linux
我正在开发一个 PHP 应用程序。我在家里的测试服务器运行 Windows,阶段服务器运行 Ubuntu(Amazon AWS)。
我的应用程序运行完美,直到我需要创建一个助手:
MY_form_helper.php
在那个助手中我需要覆盖这个:
function set_value($field = '', $default = '')
{
if (FALSE === ($OBJ =& _get_validation_object()))
{
if ( ! isset($_POST[$field]))
{
return $default;
}
return form_prep($_POST[$field], $field);
}
return form_prep($OBJ->set_value($field, $default), $field);
}
用这个:
function set_value($field = '', $default = '')
{
if (FALSE === ($OBJ =& _get_validation_object()))
{
if (isset($_POST[$field]))
{
return form_prep($_POST[$field], $field);
}
if (isset($_GET[$field]))
{
return form_prep($_GET[$field], $field);
}
return $default;
}
return form_prep($OBJ->set_value($field, $default), $field);
}
所以我把修改保存到
MY_form_helper.php
在 Windows 上进行了所有测试,一切正常。所有 PHP 高手可能都知道现在发生了什么,我上传到 linux 服务器并出现错误:)
我得到的第一个错误:
An Error Was Encountered
Unable to load the requested file: helpers/my_form_helper.php
好吧,linux 是区分大小写的,所以我把所有大写的文件名都改成了小写的。这样做之后,我看到了空白页面。
旁注:我的库名称首字母大写(例如,我使用 flexi_auth 库)并且它始终在服务器上运行。我现在不知道为什么,因为文件名中的大写字母肯定它在 Linux 上应该失败了 - 如果有人能解释的话会很棒。
我已经更改了 index.php 中的配置以通过添加显示所有错误
ini_set('display_errors', 1);
这里:
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'development':
error_reporting(E_ALL);
ini_set('display_errors', 1);
break;
case 'testing':
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
我重新加载页面,现在我可以看到有 fatal error :
Fatal error: Cannot redeclare set_value() (previously declared in /var/www/html/stage/bik/system/helpers/form_helper.php:675) in /var/www/html/stage/bik/application/helpers/my_form_helper.php on line 5
这就是我被困的地方。我做了一个很大的禁忌,并用我的代码编辑了 CI 核心系统文件中的 form_helper。我需要这一切才能正常工作,因为我有人在测试整个事情,我不能让他们等待。
有人可以向我解释一下这是怎么回事吗?我对 Linux 比较陌生,一直使用 Windows 机器和服务器。但我想顺其自然,像酷 child 一样使用 Linux。
MY_form_helper 文件:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
function set_value($field = '', $default = '')
{
if (FALSE === ($OBJ =& _get_validation_object()))
{
if (isset($_POST[$field]))
{
return form_prep($_POST[$field], $field);
}
if (isset($_GET[$field]))
{
return form_prep($_GET[$field], $field);
}
return $default;
}
return form_prep($OBJ->set_value($field, $default), $field);
}
这是我在 Controller 中加载它的方式:
$this->load->helper('MY_form_helper');
在将它移动到 linux 服务器时,我将两个大写字母都更改为小写。
现在让我感到困惑的是,我创建了 MY_Input 库并从 CI Appliaction 文件夹中的核心文件夹加载它。这个东西的名字是大写字母,它可以在 Linux 服务器上运行。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Input extends CI_Input {
function save_query($query_array){
$CI =& get_instance();
$CI->db->insert('ci_query', array('query_string' => http_build_query($query_array)));
return $CI->db->insert_id();
}
function load_query($query_id){
$CI =& get_instance();
$rows = $CI->db->get_where('ci_query', array('queryid' => $query_id))->result();
if (isset($rows[0])) {
parse_str($rows[0]->query_string, $_GET);
}
}
}
我仍在学习 PHP,我没有学到很多东西,也没有太多经验,所以我非常感谢任何人能给我的所有帮助。
我希望我说清楚了我需要回答的问题。感谢任何愿意与我分享知识的人!
最佳答案
我认为你可以将函数包装到类中
class MY_form_helper{
static function set_value($field = '', $default = '')
{
if (FALSE === ($OBJ =& _get_validation_object()))
{
if (isset($_POST[$field]))
{
return form_prep($_POST[$field], $field);
}
if (isset($_GET[$field]))
{
return form_prep($_GET[$field], $field);
}
return $default;
}
return form_prep($OBJ->set_value($field, $default), $field);
}
}
你可以这样调用它:
MY_form_helper::set_value($field, $default);
或者你需要使用命名空间,但这更长
关于php - Linux 下的 Codeigniter 文件名和加载助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32147873/
有时我需要(为了让我的开发更快)在我的代码中对一些东西进行硬编码。这可能是凭据,或者可能只是一个允许我测试某些功能的 hack。由于很多原因,我从来不想将这段代码推送到主代码库甚至开发分支。一段时间以
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我经常发现自己从类中提取常见行为到只包含一组静态方法的帮助程序/实用程序类中。我经常想知道是否应该将这些类声明为抽象类,因为我真的想不出实例化这些类的正当理由? 将这样的类声明为抽象类的优点和缺点是什
如果我这样做: $obj = factory(Object::class)->make(); collect($obj); 我返回了一个类型的集合: Illuminate\Support\Collec
我有一个应用程序,我可以在其中列出 parent 和 child 。当我添加一个 child 时,我需要获得一个 parent 列表作为下拉列表显示。有没有类似 collection_select 的
我有渲染组件( source ),用于从 Controller 字段渲染组件/助手。它适用于 ember 1.9.1,但在更新到 ember 1.12.1 后,我发现 API 发生了变化。之后upda
我刚开始使用 Rails,还有很多东西需要学习,所以我可能会比平常更频繁地在 Stackoverflow 上询问初学者 Rails/Ruby 问题。 我只是想弄清楚 Helpers 在 Rails 中
我在 Web 上使用 VS Express 2012。我的项目是一个 MVC 4 项目。 我正在尝试创建一个助手来创建一个菜单项,该菜单项是带有标签的 png 图像。我几乎剪切并粘贴了这段代码: Ac
我正在尝试在我的 Vue 页面中映射我商店的状态变量: export default { data: () => ({ localData: []
我目前正在开发一个 Rails 插件,用于生成 iPhone 特定的 HTML 元标记。我尝试使用 ActionView::TestCase 进行单元测试,但不断收到相同的错误。请参阅下面的文件内容和
我正在努力解决一个与变量声明相关的非常基本的问题。我已经阅读了有关变量的所有内容,但我不知道我的问题是否与 1) 我如何声明变量或 2) 我如何设置变量的范围有关。 首先,我对 Meteor 中变量的
我想知道是否可以将参数传递给 Meteor Helper 并在 HTML 中插入返回对象的属性,而不仅仅是返回最终值。我有这样的东西: HTML: {{#each conversation}}
我正在尝试为我的 Ember 应用程序构建一个新的条件助手。值得一提的是,我正在使用使用 Handlebars 2.0 的 Ember 1.10.1,并且我无法升级它,如果能很好地解决这个版本的 Em
我最近从 Dreamweaver 迁移到 aptana,并尝试使 aptana 尽可能相似;) 已经做了很多更改,但我仍然找不到使代码字体变小的方法(在 Dreamweaver 中代码更清晰,因为字体
我有以下模板: {{#each helperOne "1" "2" }} Lorem upsom {{#each}} helper : template.tempName.h
我有这个简单的代码块,它位于我的一个模板上,但我想将其作为助手放置,以便我的所有 View 都可以访问它。 @hidden(field: Field) = { @defining(field)
使用正则表达式,我正在替换 **text in bold**至 text in bold在一个字符串中,然后显示 message使用 {{{message}}}在我的 EmberJS 模板上。问题是我
是否有任何非常有用和健壮的 C++ 网络库?和库来帮助他们更好地运行?诸如使用 << 时自动进行字节序转换之类的东西,阻止读取直到结构或 w/e 您的读取完全传输,有助于调试协议(protocol)的
模板 {{#each tags}} {{#isObject this}} Object {{else}}
我有返回 JSON 的函数: Template.mainmenu.menuitem = function() { var jsonObj = { items: [ { ur
我是一名优秀的程序员,十分优秀!