基本上 - 我有一些需要作为 cron 作业运行的 PHP 脚本。
假设需要运行的脚本是:http://admin.somedomain.com/cron_jobs/get_stats
如果我从本地机器运行该脚本,它会给出 404 Not Found 错误。
因此我在 /etc/hosts 中输入了以下内容
XX.XX.XX.45 admin.somedomain.com
现在 wget 可以从本地计算机正常访问该域。但是当我重新启动 Apache 时,该域不再起作用。以下是 /etc/apache2/sites-available 中该站点的配置
NameVirtualHost XX.XX.XX.45:80
<VirtualHost XX.XX.XX.45:80>
ServerName admin.somedomain.com
DocumentRoot /var/www/admin.somedomain.com/
<Directory "/var/www/admin.somedomain.com">
allowoverride all
Options Indexes
order deny,allow
allow from all
</Directory>
ErrorLog /var/log/apache2/admin.somedomain.com-error_log
CustomLog /var/log/apache2/admin.somedomain.com-access_log combined
</VirtualHost>
它只是转到显示“它有效”的默认站点配置。
如果我删除 /etc/hosts 中的设置并重新启动 apache,该域名的网站就可以再次正常运行。
有人能给我指明正确的方向吗?谢谢
答案1
尝试wget --header="Host: admin.somedomain.com" http://localhost/cron_jobs/get_stats
(这是一行。)
答案2
尝试一下httpd -S
,应该会列出所有已配置的虚拟主机,包括您的虚拟主机。还要验证您的目录“/var/www/admin.somedomain.com/”是否存在,并查看日志并查看它们的内容...
答案3
您是否出于某些原因需要通过 Apache 运行脚本,由 HTTP 客户端触发?直接从 cron 运行它们怎么样?
0 4 * * * /usr/bin/php /path/to/script