标签: relocation

Wordpress在迁移后继续重定向到install-php

这是我的情况.我已经按照关于将网站移动到另一台服务器的wordpress codex页面上的确切说明进行操作.这是我采取的步骤.

  1. 导出我的数据库的副本
  2. 在新服务器中创建一个新数据库
  3. 导入我之前导出的数据库
  4. 通过Ftp上传我的Wordpress文件的副本
  5. 使用此脚本将我的所有本地URL更改为新的URL
  6. 根据新服务器更改我的wp-config.php文件(我没有忘记表前缀.虽然它有一些大写字符)

然后,当我尝试在新位置打开我的网站时,它只是将我引导到wp-admin/install.php现在只是为了使场景更清晰:目标文件夹(在实时服务器上)是public_html文件夹中的子directori.已经有另一个wordpress安装在里面(我说这是为了万一它应该重要)

我的.htaccess看起来像这样

    # BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subDirectoryName/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subDirectoryName/index.php [L]
</IfModule>

# END WordPress
Run Code Online (Sandbox Code Playgroud)

我已经尝试通过phpMyadmin检查和修复我的表,但一切似乎都没问题,对问题没有影响.

我还尝试清空实时服务器上的数据库并完成安装.它安装没有问题,一切正常,但是,我没有用于另一个干净的安装.但我认为这至少排除了wp-config文件的任何问题.我正在使用Wordpress版本3.3.1

所以我想我留下的一个重要问题是: 为什么wordpress在迁移后没有识别我的Install?

任何帮助非常感谢!

migration wordpress install relocation

59
推荐指数
5
解决办法
9万
查看次数

R_X86_64_32S和R_X86_64_64重定位是什么意思?

当我尝试在64位FreeBSD中编译C应用程序时出现以下错误:

在制作共享对象时不能使用重定位R_X86_64_32S; 用-fPIC重新编译

什么是R_X86_64_32S搬迁,什么是R_X86_64_64

我已经用Google搜索了错误,这可能是原因 - 如果有人能说出R_X86_64_32S的真正意义,那就太好了.

c compiler-construction linker elf relocation

49
推荐指数
3
解决办法
3万
查看次数

x86-64 Linux中不再允许32位绝对地址?

64位Linux默认使用小内存模型,它将所有代码和静态数据置于2GB地址限制之下.这可确保您可以使用32位绝对地址.较旧版本的gcc使用静态数组的32位绝对地址,以便为相对地址计算保存额外的指令.但是,这不再有效.如果我尝试在汇编中创建一个32位的绝对地址,我会收到链接器错误:"在创建共享对象时,不能使用".data"重定位R_X86_64_32S;使用-fPIC重新编译".当然,此错误消息具有误导性,因为我没有创建共享对象,-fPIC也没有帮助.到目前为止我发现的是:gcc版本4.8.5对静态数组使用32位绝对地址,gcc版本6.3.0不使用.版本5可能也没有.binutils 2.24中的链接器允许32位绝对地址,而2.28则不允许.

这种变化的后果是必须重新编译旧库并破坏传统汇编代码.

现在我想问一下:这个改变是什么时候做的?它在某处记录了吗?是否有一个链接器选项,使其接受32位绝对地址?

linux gcc x86-64 linker-errors relocation

21
推荐指数
1
解决办法
5787
查看次数

SVN Switch Relocate - 不是存储库的根目录

我正在尝试将一个工作副本文件夹从它的旧专用svn服务器移动到一个新的svn服务器,它包含在一个子文件夹中.使用以下重定位命令:

svn switch --relocate https://oldserver/svn/repos https://newserver/some/directory 
Run Code Online (Sandbox Code Playgroud)

我明白了:

svn: 'https://newserver/some/directory ' is not the root of the repository
Run Code Online (Sandbox Code Playgroud)

这是正确的.....但是,错误,我如何移动位置无论如何?

svn relocation

20
推荐指数
1
解决办法
3万
查看次数

处理ELF重定位 - 了解重定位,符号,节数据以及它们如何协同工作

TL; DR

我试图将这个问题作为一个简短的问题,但这是一个复杂的问题所以它最终会变长.如果您可以回答这方面的任何部分或提供任何建议或提示或资源或任何内容,那将非常有帮助(即使您没有直接解决我的所有问题).我现在正撞在墙上.:)

以下是我遇到的具体问题.请阅读下面的更多信息.

  • 我正在寻找有关如何处理重定位条目和更新节数据中未解析的符号的指导.我根本不明白如何处理我从重定位和部分等中提取的所有信息.
  • 我也希望了解链接器遇到重定位时发生了什么.试图正确实现重定位方程并以正确的方式使用所有正确的值是非常具有挑战性的.
  • 当我遇到操作码,地址和符号等时,我需要了解如何处理它们.我觉得我错过了一些步骤.
  • 我觉得我没有很好地掌握符号表条目如何与重定位进行交互.我应该如何使用符号的绑定,可见性,值和大小信息?
  • 最后,当我使用已解析的数据和可执行文件使用的新重定位条目输出我的文件时,数据都是不正确的.我不确定如何遵循所有重新安置并提供所需的所有信息.可执行文件对我有什么期望?

到目前为止我的方法

我正在尝试以特定的[未记录的]专有格式创建一个重定位文件,该格式主要基于ELF.我编写了一个工具,它接受一个ELF文件和一个部分链接文件(PLF)并处理它们以输出完全解析的rel文件.此rel文件用于根据需要加载/卸载数据以节省内存.该平台是一个32位PPC.一个问题是该工具是用c#编写的,但数据是针对PPC的,因此需要注意有趣的endian问题等.

我一直试图了解在用于解析未解析的符号等时如何处理重定位.到目前为止我所做的是从PLF复制相关部分,然后对于每个相应的.rela部分,我解析条目并尝试修复部分数据并根据需要生成新的重定位条目.但这就是我的困难所在.我离开了我的元素,这种事情似乎通常是由链接器和加载器完成的,所以没有很多好的例子可以借鉴.但是我发现了一些有帮助的东西,包括这一个.

所以发生的事情是:

  1. 从PLF复制部分数据以用于rel文件.我只对.init(无数据),.text,.ctors,.dtors,.rodata,.data,.bss(无数据)和我们正在使用的另一个自定义部分感兴趣.
  2. 迭代PLF中的.rela部分并读入Elf32_Rela条目.
  3. 对于每个条目,我提取r_offset,r_info和r_addend字段,并从r_info(符号和reloc类型)中提取相关信息.
  4. 从PLF的符号表中,我可以得到symbolOffset,symbolSection和symbolValue.
  5. 从ELF,我得到symbolSection的加载地址.
  6. 我计算int localAddress =(.relaSection.Offset + r_offset).
  7. 我从r_offset的symbolSection的内容中获取了uint relocValue.
  8. 现在我拥有了我需要的所有信息,因此我对reloc类型进行了切换并处理数据.这些是我支持的类型:
    R_PPC_NONE
    R_PPC_ADDR32
    R_PPC_ADDR24
    R_PPC_ADDR16
    R_PPC_ADDR16_LO
    R_PPC_ADDR16_HI
    R_PPC_ADDR16_HA
    R_PPC_ADDR14
    R_PPC_ADDR14_BRTAKEN
    R_PPC_ADDR14_BRNTAKEN
    R_PPC_REL24
    R_PPC_REL14
    R_PPC_REL14_BRTAKEN
    R_PPC_REL14_BRNTAKEN
  9. 怎么办??我需要更新节数据并构建随播重定位条目.但我不明白该做什么以及如何做.

我这样做的全部原因是因为有一个旧的过时不支持的工具不支持使用自定义部分,这是该项目的关键要求(出于内存原因).我们有一个自定义部分,其中包含一堆我们想要在启动后卸载的初始化代码(总计大约一兆).现有工具只是忽略该部分中的所有数据.

因此,虽然制作支持自定义部分的自己的工具是理想的,但如果有任何明智的想法以实现这一目标的另一种方式,我全都耳朵!我们已经提出了将.dtor部分用于我们的数据的想法,因为它几乎是空的.但这很麻烦,如果它阻止干净关闭,可能无论如何都无法工作.


重定位加示例代码

当我处理搬迁,我工作过的公式和信息在ABI文档中发现的HERE(约4.13节,第80ish),以及一些我已经挖出了其他代码示例和博客文章.但是这一切都让人感到困惑,并没有真正拼写出来,而且我发现的所有代码都有所不同.

例如,

  • R_PPC_ADDR16_LO - > half16:#lo(S + A)
  • R_PPC_ADDR14_BRTAKEN - > low14*:( S + A)>> 2
  • 等等

所以,当我看到这种代码时,我该如何解读呢?

这是一个例子(来自这个来源)

case ELF::R_PPC64_ADDR14 : {
    assert(((Value + Addend) & 3) == 0); …
Run Code Online (Sandbox Code Playgroud)

reverse-engineering elf opcode relocation symbol-table

18
推荐指数
1
解决办法
7029
查看次数

如何在Redmine中修改存储库设置?

这可能听起来像一个愚蠢的问题,但我不能为我的生活找到这个问题的答案.

我们在Redmine中设置了一个项目并链接到SVN存储库.一切都运行正常,但我们最近做了一个存储库重定位,我们需要更新其Redmine存储库路径设置以指向新的存储库.

问题是该选项显示为灰色,我无法更改它.我想你可以点击"删除"并创建一个新的,但是这个选项听起来真的很可怕(URL里面有///中的单词!!)我不想消灭回购.在Redmine手册中没有我能找到的参考资料.我该怎么办?

另外 - 与此相关 - 你知道旧提交中的所有票证引用是否仍然指向正确的位置?

svn repository redmine relocation

17
推荐指数
2
解决办法
9691
查看次数

搬迁的概念是什么意思?

我是装配新手,因此想要了解更多关于搬迁的概念.

  1. 为什么我们需要重新定位程序和数据?
  2. 究竟是怎么做到的?

如果有人可以用初学者级别的例子来解释,那将会很棒.

assembly linker relocation

14
推荐指数
1
解决办法
1491
查看次数

ELF 重定位的应用顺序在哪里指定?

考虑 Linux 系统上的以下两个文件:

使用消息.cpp

#include <iostream>

extern const char* message;
void print_message();

int main() {
    std::cout << message << '\n';
    print_message();
}
Run Code Online (Sandbox Code Playgroud)

libmessage.cpp

#include <iostream>
const char* message = "Meow!";   // 1. absolute address of string literal
                                 //    needs runtime relocation in a .so
void print_message() {
    std::cout << message << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我们可以将use_message.cpp编译为目标文件,将libmessage.cpp编译为共享库,并将它们链接在一起,如下所示:

$ g++ use_message.cpp -c -pie -o use_message.o
$ g++ libmessage.cpp -fPIC -shared -o libmessage.so
$ g++ use_message.o libmessage.so -o use_message
Run Code Online (Sandbox Code Playgroud)

的定义message …

c++ elf abi relocation dynamic-linking

14
推荐指数
1
解决办法
1656
查看次数

动态重定位代码段

出于好奇,我想知道在执行程序期间是否可以重新定位一段代码.例如,我有一个函数,每次执行后都应该在内存中替换这个函数.我们想到的一个想法是使用自修改代码来做到这一点.根据一些在线资源,自修改代码可以在Linux上执行,但我仍然不确定是否可以进行这样的动态重定位.有人有经验吗?

c linux assembly relocation self-modifying

12
推荐指数
1
解决办法
3331
查看次数

什么是可重定位和绝对机器代码?

在学习汇编程序时,我遇到了这些术语.我得到的想法是这样的,在可重定位机器代码中,代码不依赖于静态RAM位置.汇编程序指定我的程序的RAM需求.可以将内存放置在链接器为它们找到空间的任何位置.

这个想法是否正确?如果是这样,汇编程序如何完成?

而且,Absolute Machine Code的一些例子是什么?

assembly relocation

12
推荐指数
4
解决办法
2万
查看次数