Linux系统中Starting pptpd无法运行的解决办法
PPTPD安装后启动服务遭遇难题
在安装PPTPD后,当尝试启动服务时,却遭遇无法启动的困扰。输入命令“service pptpd start”后,系统反应并不如预期。
如果之前已经通过chkconfig将pptpd设置为开机启动,但在开机时却停在“Starting pptpd”这一步,无法继续运行。
通过查看系统日志(tail -f /var/log/message),发现了具体的错误信息:pptpd忽略了一个配置过长的文件。
一开始,我以为是因为配置文件太大了,但经过研究后发现,其实只要确保配置文件以空行结尾即可。这一结论源于对configfile.c源码的深入。
源码中的一段关键代码揭示了这个问题的原因:如果配置文件的最后一行不是换行符(''),系统会认为配置文件过长并忽略它。在编辑/etc/pptpd.conf文件时,务必确保以空行结尾。
具体代码片段如下:
/忽略长行/
if (buffer[(len = strlen(buffer)) - 1] != '') {
syslog(LOG_ERR, "Long config file ignored.");
do {
fgets(buffer, MAX_CONFIG_STRING_SIZE - 1, );
} while (buffer[strlen(buffer) - 1] != '');
continue; // 这里应该是“continue”,而非“contue”
}
结论:确保/etc/pptpd.conf配置文件以空行结尾,这样才能成功启动PPTPD服务。这一要求可能对于某些PPTPD版本而言是特定的,在配置时务必留意官方文档或相关说明。