PHP 通过 cron 的脚本找不到代码中调用的文件
PHP script via cron is not finding files called in the code
我想要 运行 php 位于服务器上的脚本:
/var/www/my_directory/myfile.php
脚本执行一个使用位于以下位置的证书文件的函数:
/var/www/my_directory/my_cert_dir/cert_file.pem
在 PHP 脚本中它们看起来像这样:
$key="my_cert_dir/cert_file.pem";
我也试过添加$_SERVER["DOCUMENT_ROOT"]
:
$key=$_SERVER["DOCUMENT_ROOT"]."/my_cert_dir/cert_file.pem";
在这两种情况下,我的证书文件都显示“找不到文件”。
但是,当 运行 通过 CLI 或浏览器时,它们执行时没有问题。
首先我是这样使用cron的:
13 19 * * * /usr/bin/php /var/www/my_directory/myfile.php >> /var/www/my_directory/my_logs_dir/some_log.txt
cron 执行了脚本但出现了错误,所以我尝试将 cron 更改为从这样的目录执行:
13 19 * * * cd /var/www/my_directory; /usr/bin/php myfile.php >> /var/www/my_directory/my_logs_dir/some_log.txt
然而这次我没有看到脚本执行并且我的日志没有创建。
有什么想法可以解决我的问题,以便执行脚本并找到证书文件吗?
为什么不试试完整路径:
$key="/var/www/my_directory/my_cert_dir/cert_file.pem"
我想要 运行 php 位于服务器上的脚本:
/var/www/my_directory/myfile.php
脚本执行一个使用位于以下位置的证书文件的函数:
/var/www/my_directory/my_cert_dir/cert_file.pem
在 PHP 脚本中它们看起来像这样:
$key="my_cert_dir/cert_file.pem";
我也试过添加$_SERVER["DOCUMENT_ROOT"]
:
$key=$_SERVER["DOCUMENT_ROOT"]."/my_cert_dir/cert_file.pem";
在这两种情况下,我的证书文件都显示“找不到文件”。 但是,当 运行 通过 CLI 或浏览器时,它们执行时没有问题。
首先我是这样使用cron的:
13 19 * * * /usr/bin/php /var/www/my_directory/myfile.php >> /var/www/my_directory/my_logs_dir/some_log.txt
cron 执行了脚本但出现了错误,所以我尝试将 cron 更改为从这样的目录执行:
13 19 * * * cd /var/www/my_directory; /usr/bin/php myfile.php >> /var/www/my_directory/my_logs_dir/some_log.txt
然而这次我没有看到脚本执行并且我的日志没有创建。
有什么想法可以解决我的问题,以便执行脚本并找到证书文件吗?
为什么不试试完整路径:
$key="/var/www/my_directory/my_cert_dir/cert_file.pem"