最佳技术支持

作者:多人
PHP 无法连接到 MySQL

我使用 RPM 包安装了 MySQL3 和 PHP4。 Apache 运行良好,MySQL 服务器也从 shell 运行良好。 PHP4 也通过 infophp() 函数调用运行。 但是我无法连接到 MySQL 服务器。 哪里出错了? —Haidar AM, haidar@netexecutive.com

您没有提及,但我假设 phpinfo 脚本显示您确实支持 MySQL。 如果是这种情况,请检查 MySQL 表,确保用户/密码/主机(在本例中为 localhost)是正确的。 —Mario Neto, mneto@argo.com.br

自动化键盘任务

我被委派为一家公司自动化各种软件任务,其中很多任务将需要模拟键盘输入。 如何从脚本向程序回显按键命令? 我甚至找不到一份完整的列表,说明哪些键映射到哪些转义序列。 有人可以帮忙吗? —Paul, tanx1@stlnet.com

尝试 expect 命令。 Linux Journal 几个月前发表了一篇关于它的文章 [那是 2000 年 12 月刊,Mario—Ed.]。 它随大多数发行版一起提供,并允许您编写脚本以自动化交互式会话。 —Mario Neto, mneto@argo.com.br

我用来从脚本调用某些程序的一个简单方法是 echo "y" | xyz 在这种情况下,我运行 xyz,它在启动后,将获得 “y” 以响应其问题。 —Usman S. Ansari, uansari@yahoo.com

无法以 Root 身份登录

由于某些原因,我无法在本地 Linux 机器上以 root 身份登录(不是远程登录)。 我可以以任何用户身份登录,然后 su 到 root。 其次,每当我必须执行任何命令(如 adduser)时,我都必须指定命令所在的绝对路径,例如 (/usr/sbin/adduser)。 —Devraj Sen, devraj@trihedral.com

文件 /etc/securetty 用作允许 root 登录的终端列表。 因此,您的控制台登录条目可能已被删除。 只需将它们放回原处,即,要允许 root 在第一个控制台上登录,您应该有一行包含

tty1

当您使用 su 时,您的 PATH 未正确设置的原因是它未被视为登录 shell。 因此,与 root 相关的任何登录文件都不会被读取。 要读取它们,请键入 su - 代替。 —Andy Bradford, andyb@calderasystems.com

据我所知,大多数(如果不是全部)Red Hat 版本都存在缺陷,因为出于各种原因,/sbin:/usr/sbin:/usr/local/sbin 从未在 root 的路径中。 快速修复方法是简单地将其添加到 /etc/profile 中的 PATH。 由于您无法以 root 身份登录,这不是通常的行为。 您应该确保 root 具有有效的 shell,并且 /etc/securetty 仍然包含 “ttyx” 行。 要获得更多线索,请键入 tail -f /var/log/messages 并查看当您尝试从另一个控制台以 root 身份登录时的输出。 —Marc Merlin, marc_bts@valinux.com

更新 shadow 文件

在通过手动编辑密码文件创建用户帐户后,同步/更新 shadow 文件的命令是什么? 另外,如何从任何进程中删除 suid 位? —Kedar, kedar.potdar@imandiasia.com

pwconv 是在创建用户帐户后同步/更新 shadow 文件的命令。 —Usman S. Ansari, uansari@yahoo.com

要删除 suid 位,请使用 chmod -s filename。 —Marc Merlin, marc_bts@valinux.com

为了防止在您编辑 /etc/passwd 时,有人同时运行一个实用程序接触该文件而意外损坏 /etc/passwd,请在您编辑 /etc/passwd 时始终使用 vipw(它使用您选择的编辑器,不一定是 vi)。 —Don Marti, dmarti@linuxjournal.com

Perl 写入延迟,然后崩溃

我编写了一个基本的 Perl 程序,它从文件中读取 URL 列表,转到 URL,查找一些信息,然后将该信息写入另一个文件。 它还将条目写入日志文件和 stdout。 我正在使用 LWP::Simple 模块。 我注意到以下奇怪的行为:1) 日志文件不会立即写入——操作系统似乎在缓存写入请求; 2) 程序似乎在 1-2 小时的完美正常运行后崩溃,但重新启动它就可以正常工作。 —Dave Barter, dave@phased.co.uk

在脚本开头键入 $| = 1 将强制您的 Perl 程序在每次打印或写入后执行刷新(请参阅 man perlvar)。 至于为什么您的程序会崩溃,请尝试同时运行 top 以查看它是否占用了所有内存。 如果是这样,请重写它,以便在处理完页面后忘记它们。 如果您无人值守地运行程序,则应使用 LWP::RobotUA,以尊重网站管理员关于其网站哪些部分对机器人开放的意愿。 —Don Marti, dmarti@linuxjournal.com

损坏的 Root 文件系统

我正在尝试使用我为其创建的分区将 Red Hat 安装到我的 Dell 笔记本电脑上。 安装运行成功,但是当我尝试加载 Linux 时,它在这些消息后挂起

checking root filesystem
/ was not cleanly unmounted, check forced
Setting filetype for entry log in /dev (174593) to 6
Unattached inode 82384
UNEXPECTED INCONSISTENCY; run fsck MANUALLY
(ie without -a or -p options)
An error occured during the filesystem check
Dropping you to a shell; the system will reboot
Give root password for maintenance

—Brian Weigner, brian.weigner@colorado.edu

似乎您的 Linux root 文件系统不知何故损坏了。 您实际上需要通过在 LILO 提示符下发出 linux s 命令进入单用户模式,并等待直到您获得 # root 提示符。 键入

e2fsck -r /dev/your-root-disk-device

这将遍历设备并询问您如何处理它找到的每个错误。 这可能会提出许多应该回答的问题。 要正确回答所有这些问题,必须具备一些 Linux 文件系统经验。 这在真正的生产系统上是冒险的事情。 现在,由于这是一个全新安装并且为了方便起见,请对所有 FIX?、REPAIR? 和 REMOVE unused/dirty stuff 问题回答是。 完成后,尝试重新启动您的系统。 如果这不起作用,那么您最好的选择可能是仔细重新安装。 —Felipe E. Barousse Boué, fbarousse@piensa.com

为了防止将来发生这种情况,请在关机前运行 shutdown -h now(以 root 身份)。 —Don Marti, dmarti@linuxjournal.com

FTP 用户发疯了! 虚拟主机失败!

我的 FTP 用户能够返回到他们的主目录之外,直接进入 /。 他们正在使用 leach FTP,它允许他们甚至在他们的主目录中向上移动级别。

此外,我在我的 Apache 服务器上运行了 20 个虚拟站点(按名称,而不是 IP)。 几次在添加新的虚拟主机时,它无法解析,直到我将其移动到 httpd.conf 中虚拟主机列表的顶部。 我用完了虚拟服务器吗? 计算机是 AMD K6 200MHz,配备 64MB 内存。 —Aaron, aaron@x56.net

wuftpd 中有一个技巧可以防止用户 cd-ing up,但如果您尚未使用 proftpd,那么安装 proftpd 可能更好。 它支持在用户的主目录或某些其他预设目录中 chroot 用户。 请参阅:http://www.proftpd.net/。 —Marc Merlin, marc_bts@valinux.com

您没有用完虚拟主机,但是此配置可能很棘手。 以下是一些需要检查的事项。 损坏的虚拟主机之前的虚拟主机中的任何 ServerName 或 ServerAlias 值是否与损坏的虚拟主机的名称匹配? 如果您有 ServerAlias *.example.com 并添加 warez.example.com,则它将不起作用。 将所有带有 * 别名的内容放在末尾。 执行 nslookup 以确保所有虚拟主机的 DNS 都能正常工作。 确保 NameVirtualHost 指令位于相应的 VirtualHost 部分之前。 阅读 https://httpd.apache.ac.cn/docs-2.0/vhosts/details.html,当然还有每个网站管理员阅读最多但最不喜欢的阅读材料 error_log。 —Don Marti, dmarti@linuxjournal.com

我没有拨号音,但我必须拨号

我有一个 PCTEL 内置调制解调器,我从 linmodems.org 获取了驱动程序并安装了它们。 问题是调制解调器一直拨号,并显示消息 NO DIALTONE。 我只连接过一次,那是在尝试了很长时间之后。 此外,传输速率也不是我所期望的。 —Krishna, as_krishna@hotmail.com

尝试查看在您的 AT 初始化字符串中添加 X1 是否有所不同。 —Marc Merlin, marc_bts@valinux.com

垃圾邮件发送者钓取地址

越来越多地,我看到垃圾邮件发送者试图通过简单地尝试一系列常见的名字(即 david@example.com, bill@example.com, mike@example.com 等)向我的域发送邮件。 是否有任何自动化方法可以在 X 个失败地址后关闭连接,甚至更好的是,将其 IP 添加到 sendmail 的访问数据库? —Waldo Jaquith, waldo@waldo.net

您可以编写一个小的 Perl 脚本,该脚本解析拒绝日志,将 IP 添加到黑名单,并在发生这种情况时重新启动 sendmail。 —Marc Merlin, marc_bts@valinux.com

加载 Disqus 评论