CasperJS PHP封装脚本运行命令失败求助
解决PHP CasperJS运行时tempnam()的Notice提示
这个Notice本质上是PHP的提醒:tempnam()函数在没有指定自定义临时目录时,默认使用了系统临时目录,它本身不会阻止CasperJS脚本的运行,但如果想要消除这个提示,可以试试下面几种方法:
方法一:配置PHP的临时目录(推荐)
WAMP环境下,你可以通过修改php.ini来指定PHP的临时目录,让tempnam()使用这个目录而非系统默认:
- 打开WAMP管理器,找到对应PHP版本的
php.ini(注意区分网页环境和CLI环境的php.ini:如果脚本通过网页运行,选Apache对应的;如果是CLI运行,选PHP CLI对应的) - 在配置文件中找到
sys_temp_dir项,设置为你有权限读写的目录,比如:sys_temp_dir = "C:/wamp64/tmp" - 重启WAMP的Apache服务,重新运行脚本
方法二:修改Casper.php的代码
直接修改封装包的代码,给tempnam()添加自定义目录参数:
- 打开文件
C:\wamp64\www\casper2\vendor\phpcasperjs\phpcasperjs\src\Casper.php,定位到第595行 - 将原来的
tempnam()调用修改为指定临时目录的版本,比如使用PHP内置的sys_get_temp_dir()获取当前配置的临时目录:
或者你也可以直接指定一个固定目录(确保该目录存在且PHP有读写权限):// 原代码示例: // $tempFile = tempnam('', 'casper_'); // 修改后: $tempFile = tempnam(sys_get_temp_dir(), 'casper_');$tempFile = tempnam('C:/wamp64/tmp', 'casper_'); - 保存文件后重新运行脚本
方法三:关闭Notice级别的报错(不推荐)
如果只是不想看到这个提示,也可以临时关闭Notice报错,但这会隐藏其他可能有用的提醒,所以不建议长期使用:
- 在你的脚本开头添加以下代码:
error_reporting(E_ALL ^ E_NOTICE); - 或者修改
php.ini中的error_reporting项:error_reporting = E_ALL & ~E_NOTICE
内容的提问来源于stack exchange,提问作者Wesley Jeftha
相关产品推荐
相关产品推荐

