我在使用php 4编写的代码库上工作.我想通过将代码升级到php 5(我的主机提供的最新版本)的过程.我想知道是否有其他人已经经历过类似的升级体验,并且可以分享其中存在的问题/陷阱,我的代码中需要更改的内容,两个版本之间没有向后兼容的内容?
我有一台笔记本电脑和一台台式机,我正在努力学习使用git来管理我对perforce存储库的工作.我在桌面上成功使用git-p4,并且可以在笔记本电脑上成功使用它.但是,我希望能够做的事情之一就是"拉"或"推"更改从笔记本电脑到桌面,反之亦然,而不先将它们检入到与git同步的p4分支.
所以,这就是我设置两个回购的方法:1)使用git-p4 clone在我的桌面上设置一个repo.做一些工作,做几个提交git,几个提交到git-p4.一切都按预期工作.2)之后,在我的笔记本电脑上设置一个回购,准备在两台机器上工作.同样地,使用git-p4来复制现在的当前p4 repo(现在已经检查过几次修改,我在(1)中执行了git-p4.
现在,我希望做的事情:1)在桌面上做一些工作.将工作交给git,但不是p4.2)转到笔记本电脑,从桌面回购中做一个git pull ... 3)继续我的笔记本电脑工作,定期做git.4)(可选)从笔记本电脑提交p4 5)(可选)推送到桌面(或从笔记本电脑拉到桌面)并继续在桌面上工作等.
基本上,我希望能够在笔记本电脑和台式机之间来回推送/拉出东西,而无需实际登录到p4.
这听起来应该是可能的吗?如果是这样,我上面有错误的步骤吗?
以下是持续发生的事情:当我尝试在上面的(2)中执行"拉"时,我收到错误消息,说明存在冲突 - 这些冲突与p4分支的第一次检出之间发生的变化有关,第二个git-p4 repo创建的时间.换句话说,它们似乎是对第二个回购包含的代码中应该已经存在的更改的重放,但出于某种原因,它们不是.
我对git很新,所以我希望我的问题不是愚蠢或不可能理解.在此先感谢您提供任何帮助.
我想在body标签的开头正下方放置一个iframe.这有一些问题,因为body标签可以有各种属性和奇怪的空白.我猜这将需要正则表达式正确执行.
编辑:这个解决方案必须与PHP 4和性能是我的关注.这是为了这个http://drupal.org/node/586210#comment-2567398
我有一个简单的PHP会话和AJAX示例,它在会话中保存数组时有效:
请求文件:
<?php
session_start();
$_SESSION['data'] = array('foo','bar');
echo count($_SESSION['data']);
?>
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
</head>
<body>
<button id="but1">Go</button>
<script type="text/javascript">
$('#but1').click(function() {
$.ajax({
url:'ajaxtest_remote.php',
success:function(result) {
alert(result);
}
});
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
远程文件:
<?php
session_start();
echo 'count=' . count($_SESSION['data']);
?>
Run Code Online (Sandbox Code Playgroud)
第一个文件的回显显示为2,成功函数中的警报显示"count = 2".快乐的时光.
出现问题的地方是我将数组替换为类对象:
请求文件:
<?php
session_start();
include('ajaxtest_class.php');
$_SESSION['obj'] = new TestClass('foo,bar');
echo count($_SESSION['obj']->dataList);
?>
<!-- HMTL AS ABOVE -->
Run Code Online (Sandbox Code Playgroud)
远程文件:
<?php
session_start();
echo 'count=' . count($_SESSION['obj']->dataList);
?>
Run Code Online (Sandbox Code Playgroud)
班级档案:
<?php
class TestClass {
var $dataList;
function TestClass($incoming) …Run Code Online (Sandbox Code Playgroud) 我的票务系统中有一张表,有15,000条记录,每条记录都包含一封电子邮件,该电子邮件已转换为要添加到故障单的邮件.
我们当前的问题是整理 - 当我得到系统时,它使用latin1_swedish_ci.但是,我们在系统中使用了几种欧洲语言,因此我们需要能够正确存储非ASCII字符.
我无法使用latin1_swedish_ci排序规则,但我在系统的测试版本上发现将排序规则切换为utf8_bin可以解决问题.
因此,我需要知道在实时系统上对我的表/列进行此更改是否安全.这会花费很长时间(当你试图让它真的很难工作时,PHPMyAdmin非常可怕)还是会破坏任何现有数据?
我在一个CI应用程序中遇到致命错误,我刚从php4共享主机转移到php5共享主机.
Fatal error: Call to a member function set_userdata() on a non-object in /home/chuck_ravenna/bob.ravennainteractive.com/system/application/helpers/authenticate_helper.php on line 13
Run Code Online (Sandbox Code Playgroud)
代码完整位于以下链接中
https://gist.github.com/1474173
我想弄清楚php版本是否可能成为问题.该站点在旧服务器上运行良好,新服务器没有php4作为选项.
破解的具体代码行是:
$this->session->set_userdata("admin", $user[0]["admin"]);
Run Code Online (Sandbox Code Playgroud) 我有用户定义的函数排序,按日期排序.它在同一年运行良好,并且在年份发生变化时不起作用.这是按函数排序的日期示例:
01/02/2013
01/03/2013
12/12/2012
function mysort($a,$b) {
return $a['date']>$b['date'];
}
usort($arr,"mysort");
Run Code Online (Sandbox Code Playgroud)
这是一个使用php4的旧应用程序.有没有办法直接比较日期?
我正在处理几个向后兼容性问题,并一直在使用PHP手册作为参考.我一直在使用位于页面顶部的版本信息.例如,is_null版本信息是
(PHP 4> = 4.0.4,PHP 5,PHP 7)
据我所知,只有当版本大于或等于4.0.4时才存在于PHP 4中的is_null,并且它也存在于PHP 5和PHP 7的所有版本中.
我已经意识到信息可能不正确,因为is_dir版本信息是
(PHP 4,PHP 5,PHP 7)
但通过做一点谷歌搜索("is_dir""PHP 3")我发现它是在版本3中引入的.
首先我是否正确理解了版本信息?还有另一种方法可以找到添加函数或预定义常量的方法吗?
编辑
在PHP 4更改日志和PHP 5更改日志是有帮助的,他们提供的所有更改的详细列表,我没有理由相信任何信息不正确.不幸的是,在此之前似乎没有任何更改日志.
更新
虽然似乎没有更改日志,但可以从http://museum.php.net/下载所有PHP版本的源代码,因此可以确定函数的来源,预定义常量和PHP的任何其他部分从查看来源.
在页面的末尾,如果发生某些事情,则需要将其清除,然后需要在向客户端提供服务之前重新解析整个页面.我要回复一个javascript来刷新页面,但是这会让他们加载页面然后重新加载它......我想知道是否有办法让php引擎回到开头并重新开始 - 稀疏整个页面?
谢谢!
我会尝试更清楚地解释这个问题,但它很复杂,我是一个可怕的沟通者.我在列出产品的页面上为用户提供选择字段以缩小结果的选项.系统会记住这一点,因此他们无需继续选择它们.如果他们缩小像金属颜色这样的类别,然后进入金属颜色与水晶雕像无关的类别,它将不会显示任何结果,因为没有一个会匹配所选择的金属颜色.生成查询以从数据库中提取产品非常复杂,因为不同的类别对于查找正确的产品有不同的要求.因此,一旦生成了查询,我想针对mysql_num_rows()测试它,如果没有结果清除用户选择并重新开始.
我需要在我正在构建的Web应用程序中实现一个简单的PHP代理(基于Flash并且目标服务提供程序不允许编辑其crossdomain.xml文件)
任何php专家可以提供以下2个选项的建议吗?此外,我认为,但我不确定,我还需要包含一些标题信息.
感谢您的任何反馈!
选项1
$url = $_GET['path'];
readfile($path);
Run Code Online (Sandbox Code Playgroud)
选项2
$content .= file_get_contents($_GET['path']);
if ($content !== false)
{
echo($content);
}
else
{
// there was an error
}
Run Code Online (Sandbox Code Playgroud)